批处理的语法什么的和汇编有点像,目测是同一个时代的产物。为什么要用这么古老的东西呢,是因为很多时候我们需要批处理一堆命令行,在环境配置,软件升级发布上很有作用。最近也写了一些,权当做个笔记吧!
注释
rem 这就是注释
设置全局变量
set root=%~dp0
%~dp0就是当前bat所在路径
有一点要注意的是“=”两边不能有空格
这个和call 连用的时候就要注意了,不要用相同的变量名,因为是全局变量,所以call中改了当前bat的变量名,回来也是会起变化的。
判断文件夹是否存在,存在的话就删除掉
if exist .gradle (rd /s /q .gradle)
删除文件夹
rd /s /q .gradle
新建文件夹
md .gradle
调用其他bat
call other.bat
other.bat
两种都可以,不过稳妥一点一般是call,应为直接调用可能如果在other.bat中退出的话,当前bat也会中断执行
退出
exit /b 0
exit /b 1
这个可以设置返回值,检查bat是否正确执行
写入文件
echo "%root%">file.txt
这样写入就会在文件中换行,不换行的话可以这样写
echo |set /p="%root%">file.txt
但是这样写在字符串的末端会有一个空格,要去掉空格可以这样写
echo |set /p="%root%"%^>file.txt
在文件中追加东西可以用>>
例如
echo "%root%">file.txt
echo "%root%">>file.txt
出来就是两行当前路径的字符串加一个回车
跳转goto
举个例子,执行之后,就不会看到hehehe了,是直接看到“Jump here”
goto Jump
echo hehehe
echo hehehehe
:Jump
echo Jump here
获取bat传入参数
外部调用就是
XXX.bat arg1 arg2
bat里面获取就是
set arg1=%1
set arg2=%2
%1 %2 就是第几个参数,例如第一个参数就是%1,第二个参数就是%2
验证参数是否为空可以这样判断:
if "%arg1%"=="" (echo error)