培训班上课的第一天老师讲内容是windows的“用户和组”,老师讲的内容很好;在课间休息的时候老师出了一道题让我们做;题目是这样的:我们班有四十个成员学号从一到四十,创建四十个用户,用户名是我们班每个成员名字的汉语拼音;并创建十个小组,小组名字为“第一小组”到“第十小组”而且把用户按照学号分成十组并加入刚到刚才创建的十个组中。听完这个题后,班里边快乱成一锅粥了。大加都在相互打听我们班成员的名字,班长创建了一个共享文件夹让我们班每位成员都进去把自己的名字和相应的学号写进去,然后大家都进去把所有的成员名字都下载下来,然后开始一个一个,一组一组的创建……过了一个多小时了,老师问我们完成了没有,班里边没人吱声,而我才完成了一半。一看这种情况老师有点不太高兴了,这么长时间了没有一个人完成。然后说了一句震撼全班的话:“我只要三分钟就能完成……”
老师是这样做的,首先把存有我们班成员整理成一个execl的文件,表格中依次有:学号、成员名字汉语拼音、密码、所属小组。老师把这个表格文件另存为一个“name.csv”的文件,此文件的位置在D盘根目录,然后老师在命令提示符中输入了这样的一段代码:
for /f "tokens=1-5 delims=," %a in (D:\name.csv) do net user %b %c /add 按一下回车结果出来了所有用户及其密码都已经创建完成。天!太神奇了,班里有乱成一锅粥了;接着老师又输入一段代码:
for /f "tokens=1-5delims=," %a in (D:\name.csv) do net localgroup %e /add 按回车所有小组都创建完毕;这是老师输入第三段代码:
for /f "tokens=1-5 delims=," %a in (D:\name.csv) do net localgroup %e %b /add 按一下回车,老师让我们看了一下结果。所有的小组、用户都已经创建完毕,而且也把用户加入到了相应的组中。这是我看了一下时间三分钟不到,真是事半功倍呀!
老师简单的给我们讲一下每段代码的意思:老师说这是一个FOR循环,编程里边用到的。能按照自己的意思循环的执行任务,选项“/F”是指目标是文件的类型;“tokens=1-5 delims=,”代表目标文件里边有五列而且每列之间用“,”隔开;“%a”是指变量即目标文件的第一列是%a,并以此类推“in (D:\name.csv)”代表目标文件的位置,其中.csv是指文件中的每项是以逗号隔开的 do后边是创建用户及密码的命令和参数“%b”代表要创建的用户是目标文件中的第二列中的项;“%c”代表创建用户名的密码代表目标文件中的第三列的项;第二段代码中“net localgroup %e /add”是创建本地用户组的命令,“%e”代表目标文件中第五列中的项。而第三段代码中的“net localgroup %e %b /add”是把用户加入到相应的组中的命令。“%b”是指将目标文件中第二列的项即用户名。经过老师这么一讲大家知道了我们感觉这么复杂的问题还可以这样解决,让我们耳目一新。
既然这种解决方案这么好用,我就在课下认真研究了一下有关“for……do”的循环发现还很有用,for后边还有好多选项呢,像什么/F、/L、/R、/D好几个呢有感兴趣的自己慢慢研究吧。
经过慢慢的研究知道了这种用代码在命令行里边完成任务的做法叫“BAT脚本”,这种方法省时省力很方便的,我断定以后我肯定会用的到。这样的效率是很高的,而且高的惊人啊。在现在这么发达、这么讲究效率的时代这种方法肯定很流行的。
下边再给大加一段很好用的代码:
For /L %i in (0,1,254) DO ping -a -n 1 192.168.0.%i |Find /i "reply" >>E:\IPAddress.txt
运行这段代码的结果是把所有“192.168.0.0”网段中主机名与ip地址的对应的关系重定向到E盘根目录下名为“IPAddress.txt”文件中。
其中“%i in (0,1,254)”表示从0开始每次加1一直循环到254,“ping -a -n 1 192.168.0.%i”,“-a”表示获取主机名,“-n 1”表示指发送一个包同时也返回一个包;如果用户的局域网自行定义的了IP地址,应根据实际情况设置,如可以为“172.16.0.0”;Find /i "reply">>E:\IPAddress.txt这段代码的作用是只把有回应的筛选出并重定向到E盘根目录下名为“IPAddress.txt”文件中。
怎么样有用吧,还等什么大家赶紧研究吧!