一、set
set manifest_v=1.0.0
set manifest_v =1.0.3
注意空格,上面是两个不同的变量
二、/c /k的区别
gulp.bat
::执行命令不显示
@echo off
cmd /c gulp default
pause
如果改成/k的
原因可以参考cmd.exe启动参数说明
/c 执行 String 指定的命令,执行完后停止,会退出。例如:
@echo off
cmd /c "echo %cd% & echo ddddd & set xxx=12345"
pause
cls
后面的pause和cls也会执行,执行到最后则会退出当前的运行环境(双击运行方式),但当前环境变量xxx不会保留(开始->运行->cmd,然后执行当前bat文件的方式执行完后,再次输入set查看当前环境变量)
/k 执行 String 指定的命令并继续,运行完会保持当前运行窗口及环境变量。例如:
@echo off
cmd /k "echo %cd% & echo ddddd & set xxx=12345"
pause
cls
程序执行完cmd后面字符串的命令后就会暂停执行,所以后面的pause和cls不会执行。但窗口和环境变量会保持。运行方式:双击或从命令行执行当前bat文件都行
按照上面的解释,如果使用了/c,并且没有加pause,那么执行完cmd会自动关闭。也就是说,cmd /c dir 是执行完dir命令后关闭命令窗口。 cmd /k dir 是执行完dir命令后不关闭命令窗口。
三、find
::执行命令不显示
@echo off
find "cuxi" test.txt
::cmd /c gulp default
pause
---------- TEST.TXT
cuixu test
cuixu aa
cuixu b
请按任意键继续. . .
四、call
运行layacmd后,下面的命令就不执行了。参考BAT文件里Maven命令执行后退出的解决方案
在BAT文件里面执行Maven的mvn命令后,mvn之后的命令不会被执行,这是由于mvn本身也是BAT文件,并且其结束时执行了exit命令。要让mvn命令不使当前脚本自动退出,只需要在mvn之前加上call命令
::执行命令不显示
@echo off
echo "******************layacmd resource version begin******************"
call layacmd resourceVersion -i res -o . -n 1.0.1
echo "******************gulpfile.js begin******************"
cmd /c gulp
pause
call具体可参考 批处理命令——call 和 start
五、删除
参考
cmd rd命令 删除文件夹
批处理删除文件夹下所有文件和文件夹
前面的教程中介绍过,删除文件用的是del命令,那么,是不是像ren命令通吃文件和文件夹一样,del是不是也可以删除文件夹呢?答案是否定的,因为删除文件夹必须使用rd命令,这叫术业有专攻_。
rd的另外一个写法是rmdir,源自ReMakeDirectory。使用的方法也很简单:rd 文件夹名 即可,例如:rd test。它支持带路径的文件夹名,例如:rd d:\test。
有时候,rd并不能很好地完成任务:你让它删除test文件夹,它却傲慢地向你翻白眼:目录不是空的。不过,这也不能怨它偷懒不干活,只是它的脾气有点怪:如果要删除的文件夹下面还有子文件,你得给rd戴顶高帽,加个 /s 参数,它才会高高兴兴地帮你做事,所以,正确的写法是:rd /s test。
如果你是个彻头彻尾的懒鬼,光是使用 rd /s test ,可能还是对它不甚满意,因为当你在删除带子文件的文件夹的时候,CMD总是不识时务地停下来,殷勤地问你:是否确认(Y/N)?非得等你输个字符敲下回车不可。命苦不能怨政府,点背不能怨社会,谁叫rd有那么大的威力呢,它一旦耍起流氓来,那是谁也拦不住的——rd有风险,删除须谨慎啊。好在微软对那些对删除十分有把握而又懒得要命的家伙体贴入微,提供了一个十分方便的参数 /q ,它取自quiet,官方解释为:安静模式,带 /S 删除目录树时不要求确认。这次再试试:rd /q /s test,真个是:弹指一挥间,灰飞烟灭,是不是有眼不见心不烦的酣畅感?
1、rd命令
rd /s /Q c:\temp
会将temp文件夹也删除
2、rd命令+md命令
rd /s /Q c:\temp
md c:\Temp
删除后再重建
3、del命令
del /s /Q c:\temp
只能删除文件,而不能删除子文件夹
4、del命令+rd命令,先刪除文件,再进入temp文件夹删除目录
del /s /Q c:\temp
cd C:\temp
rd /s /q c:\temp
六、if
@echo off
set manifest_v=1.0.0
if exist manifestVersion.txt (
set manifest_v=1.0.2
) else (
set manifest_v=1.0.3
)
echo %manifest_v%
pause
这里如果格式错误,双击执行bat会一闪而过。打开cmd去运行bat,会看到报错信息:命令语法不正确。找了半天,发现是if exist gulpfilxe.js (这个字符串里,"js"后缀和"("之间必须要有空格...