今天看见实验室前几届师兄留下批处理程序发现自己写的好low。跑过程序都需要重复写几十行,而师兄用两个for循环就搞定了。今天就好好学习一下常用的批处理命令,提高一下效率 。
为方便起见,按照c的注释风格来解释各个命令的意思,

1.echo off   表示在此语句后所有运行的命令都不显示命令行中的内容本身。也就是从你输入echo off语句后开始,就不会再显示你命令行中输入的命令了。
2.echo on   表示显示命令行的输入。
3.@ xxxx:
 与echo off很像,但是@是加在每行命令的最前边,只能不让这条命令显示
4.echo  “echo”英文为回声的意思,单独输入echo,则会返回当前的状态:打开(echo on)或关闭(echo off)
5.echo this is a comments   这条命令行意思是显示字符串this is a comments ,这个功能和cout有点像。
6.rem 这一行是注释   rem用来表示注释,需要单独起一行,rem后边都是注释内容。
7.::   这个也可以用来表示注释,在批处理中作用和rem一样的。
8.pause   用来暂停并保持窗口,如果没有这个pause,程序跑完后窗口就会一闪而过。
9.goto和:   goto是跳转命令,而‘:’是一个标签,程序云顶到goto语句时就会跳转到:标签定义的部分执行。
10.if else 举例说明:

@echo off
set var=123
if defined var (echo var=%var% ) else echo undefined!

如果代码按照上边写,输出为:

var=123

如果代码写成:

@echo off
set var=123
set var=    //这样的话,var的空间又被收回了,等于没有定义var这个变量
if defined var (echo var=%var% ) else echo var undefined!//变量用defined
if exist test.txt echo 当前文件夹存在test.txt文件//文件用exist

输出为:
var undefined ! 注意:set var= 这个空赋值可以取消赋值,收回变量占据的内存空间。
11.for语句   for语句可以实现类似C语言里边的for循环。通过不同的组合有不同实现方式。
11.1 无开关型
  无开关的for语句在设定的范围内进行循环,是最基本的循环方式。格式如下:

for %%variable in (set) do command

  其中%%variable是批处理程序中的书写格式,在DOS中是写成%variable(只有一个%);set是我们要设定的循环范围,类似c语言中的循环变量,它应该包含多个值。
@echo off
::for %%i in (bbs bathome cn) do echo %%i

::检测电脑中有几个硬盘
REM set str= c d e f g h i j k l m n
REM echo ?
REM for %%i in (%str%) do if exist %%i: echo %%i
REM pause

::想知道当前目录下都有哪些文件
REM echo off
REM for %%i in (.) do echo “%%i”
REM pause

::列出当前目录下所有的文本文件
REM echo off
REM for %%i in (*.txt) do echo “%%i”
REM pause

::列出只用两个字符作为文件名的文本文件 注意通配符*和?
REM echo off
REM for %%i in (??.txt) do echo “%%i”
REM pause

::显示12.txt文件中的每个字符,显示方式是每次显示一行字符,依次处理每个字符
:: 记得 for /f 是以行为单位处理文本文件的
REM echo off
REM for /f %%i in (12.txt) do echo %%i
REM pause

::显示12.txt文件中的第一行的字符
REM echo off
REM for /f %%i in (12.txt) do echo “%%i” &pause
REM pause

:: delims设置截取的标准,是",“还是”.",注意中英文符号要和txt中一致,tokens来提取第2,3节
REM @echo off
REM for /f “delims=, tokens= 2,3” %%i in (12.txt) do echo %%i %%j
REM pause

::
REM @echo off
REM for /f “skip=1” %%i in (12.txt) do echo %%i
REM pause

::计数循环 for /I 意思是loop
::for /l %%i in (x,y,z) do („„),在这个语句
::中, x、 y 和 z 都只能取整数,正负皆可, x 指代起始值, y 指代步长, z 为终止
::值,具体含义为:从 x 开始计数,以 y 为步长,直至最接近 z 的那个整数值为止,
::这之间有多少个数, do 后的语句就执行多少次。
::x,y,z的值可正可负,甚至为0
::步长y的值为正整数,终止值z不能小于初始值x
@echo off
for /l %%i in (1,1,9) do echo %%i
pause