本文参考链接:https://blog.csdn.net/iteye_1032/article/details/82206746,
http://www.dzwebs.net/3814.html
1.回显设置:
(1)@echo off:
echo off:关闭回显
@:表示echo off这一行也不会回显
(2)1>nul :不显示命令运行的正确提示;
2>nul:不显示错误提示;
>nul:屏蔽命令输出内容
del test.doc 2>nul rem 屏蔽错误提示
2.脚本注释方法:
单行注释:
(1)rem 注释内容
(2):: 注释内容
(3)echo 注释内容 > nul
多行注释,例:
goto comment
注释内容
注释内容
:comment
//以:xx来构建一个标号,然后用goto xxx直接来执行标号后的命令
3.变量使用:
set /a x=1+2 rem /a后面加表达式
echo %x% rem 3
pause>nul
set /p y=请输入一个值: rem /p实现与用户交互
echo %y%
pause>nul
扩展变量
%errorlevel% 判断上一条命令是否执行成功(相当于linux shell中的$?)
%processor_architecture% 系统架构,amd64/x86
@ 与%i相关的变量(bat参数或者for循环的%i)
假设文件为C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%0 C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%~dp0 C:\Documents and Settings\jinsun\桌面\
%cd% C:\Documents and Settings\jinsun\桌面
%~nx0 ParseSinglePkgs.bat
%~n0 ParseSinglePkgs
%~x0 .bat
与%VAR%相关的变量
%VAR:str1=str2% 会将VAR中的str1替换为str2(str2如果为空则可以达到删除的效果,str1前可以加*,变量%ABC:*B=%是C)
%VAR:~0,-2% 会提取VAR 变量的所有字符,除了最后两个
%VAR:~2% 会提取VAR 变量的除前两个的所有字符
%VAR:~-2% 会提取VAR 变量的最后两个
%VAR:~2,5% 提取从第2个字符开始的5个字符
4.获取参数方法有2种,
一种为从命令行输入参数,使用两个%中间包含数字表示,数字从1至9,也就是说命令行参数最多为9个
另一种为键盘输入参数,合用set /p完成,以下为示范代码:
@echo off
echo show %1%
set /p ver=请输入版本:
echo 版本:%ver% 打包开始
5.type用于打印文件内容,相当于linux的cat,如:
type a.txt //显示的是a.txt的内容
echo a.txt //显示a.txt的字符串
type还可用于批量创建文件,如:
type nul > a.docx rem 创建a.docx文件
echo > b.docx rem 创建b.docx文件
6.dir查找目录下的txt文件:
dir *.txt /b /s //显示文件名、路径以及子目录下文件
dir *.txt /b //只显示文件名
/b - 舍弃标题与摘要内容
/s - 遍历当前目录和子目录
查找c盘下所有的txt文件:
cd / & dir *.txt /b /s > name.txt
7.特殊符号:
^用于对特殊符号">""<""&"的前导符,在命令中它将以上3个字符的特殊功能去掉,仅仅只把它们当成符号而不使用他们的特殊意义。
echo test ^>1.txt rem 打印结果为test ^>1.txt
&和&&都用于连接多个DOS命令,其中&把这些命令按顺序执行,而不管是否有命令执行失败;
而&&把这些命令按顺序执行,如果有命令执行失败就exit,不在执行下一个命令。
echo 1 & echoo 2 & echo 3 rem 输出1和3
pause>nul
echo 1 && echoo 2 && echo 3 rem 只输出了1
pause>nul
||:顺序执行,有一个命令执行成功就exit。
|:管道符号,前一个命令的输出作为下一个命令的输入。
netstat -ano | findstr 80 rem 筛选出netstat -ano执行结果中包含80字符串的行
8.多脚本调用:
echo. |call C:\Users\Jerry\Desktop\b.txt
echo.相当于遇到pause就按下enter键的操作