bat的语言相对来说并不是那么的完整,对于所以在规则上可能会有一点坑爹:在某一些地方基本上没有规则,在另外一个地方却是对规则要求的很死。废话不多说,上干货。
0、没有事的话不要随意乱添加空格,不然效果就会让你欲仙欲死。
比如:set name=Tom 和set name =Tom的效果就不一样,后一个的变量名是 :name(空格)
(但是在某些地方比如说if和for语句的判断条件的末尾需要使用括号的时候,不加空格,那整个语句就错了!)
1、呼叫外部方法是的格式是这样的:
call :方法名
:方法名
.........
ps:所以:一般应该把方法名放在最后。
2、if语句的格式是这样的:
if 判断语句 (语句)(空格)else(空格)(语句)
或者
if 判断语句执行语句(空格)(只有一句)
注意:空格很重要
3、if语句的否定判断是加上not,没有其他形式:eg:if not exist .....
4、if语句的对比格式:
对比字符串使用==
对比数字使用 equ 等于;gtr 大于;geq大于或等于;lss 小于;leq小于等于;neq不等于
判断定义使用 defined
5、for语句的格式是这样的:
for %%I in (command1) do command2 (do的前后都要加上空格)
6、set语句没有固定的默认格式,但是对比的时候还是要注意格式的统一(例如:不能拿set和set/a 的值进行相互对比),想要进行数字计算的话,记得这样设set /a ,而且数字和字符可以相互转换。
set com=34
set /a cun=34
set dis=%cun%
set %com% equ%dis%(或者使用==也可以)
7、批处理的预处理机制是将一条语句完整的读入内存中,然后开始识别关键字,开关,变量,参数引用,如果代码有错误,就会出现错误提示,然后退出批处理(所以,如果不进入批处理的文件夹内运行批处理的话,基本上是看不到批处理的错误提示的。)顺利通过之后,就开始将其中的变量,引用参数用已经准备好的值进行代替,当所有的准备工作完成之后,才开始执行这条语句。
8、使用批处理解压时注意解压到指定文件夹时,应该加文件夹后加上一个反斜杠,作为下属的标志
eg:"D:\ProgramFiles\WinRAR\WinRAR.exe" x tomcat_bak.zip F:\home\
9、注意变量延迟的问题,只要是有能将几句话并为一条读取的,90%都会出现变量延迟的问题。所以检查一下并无不可。
10、当路径名太深的时候,注意在路径上要加上双引号,不要问为什么,都是泪!!!(dos上不支持比较深的路径名)
11、拷贝文件和文件夹时,要拷贝的文件,不需要在路径的最后加上\。而拷贝到的路径上必须要加上反斜杠。
eg:xcopy /e d:\123 D:\weq\
12、文件转移时需要注意,不能跨区进行转移,比如说从C盘转移到D盘。想要进行转移,只能现将源文件从C盘拷到D盘,然后将C盘中的源文件删除,达到转移的效果。
13、bat不像shell没有逃出循环的关键字,唯一的goto :eof 的作用范围还是不固定的:
goto :eof 的范围就是:在有call的时候,goto :eof 的作用范围就是,退出call;在没有call的时候效果等同于exit。
所以:想要跳出循环就使用 goto :方法名 ,然后在循环体外加一个 :方法名
eg: for(
.......
goto : 方法名
)
:方法名
.......