编写bat时应该注意的小问题

来源:互联网 发布:七月算法tensorflow 编辑:程序博客网 时间:2024/06/06 00:34

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 : 方法名

:方法名

.......


原创粉丝点击