批处理文件创建:
1. 使用copy con命令创建批处理文件
con(console)代表计算机屏幕,该命令是将计算机屏幕上的内容输入到指定的文件中,适用于创建较小的bat文件,不能用于已有的bat文件编辑
2. 用记事本创建批处理文件
2. 使用edit命令创建和编辑批处理文件,比较古老,很少使用。
基本语法:
1. echo命令和@符号 ,一般开头就会使用@echo off
echo [{on|off}] [messgae], echo on后面执行的命令都会显示在屏幕上,echo off 会静静地执行(包括当前行和之后的所有行);
@会限定当前执行命令的回显(只针对当前行),且不受echo命令的限制;
@echo on
@type a.txt
@echo switch off the echo
echo off
type a.txt
2. pause 用于暂停批处理的执行,显示“请按任意键继续...”
3. call命令 call [[Drive] [Path] filename [Parameter]] [[:label] [arguments]]
call a.bat //调用意外一个bat文件
call :xx //调用xx标识符处的命令
:xx
echo here is xx cmd!
4. rem命令,用于注释,执行时会被忽视
5. set命令,用于设置和显示变量
6. goto命令,流程控制转向命令, goto label, 去执行:label处的程序,label最多8ge字符,超过8个则只识别前8个。
7. start命令,重新启动一个新的窗口,执行指定的命令,start ["title"] [/dpath] [/i:] [/min] [/max] [wait](等待新窗口结束才继续执行)
8. if命令,条件判断
if exits a.txt (echo find the file) else (echo don't find the file)
if [not] errorLevel number [else expression]
if [not] string1 == string2 [else expression]
if [not] exist file [else expression]
if [/i] string1 compareOp string2 [else expression]
compareOp:
EQU
NEQ
LSS
LEQ
GTR
GEQ
9. for语句
@echo off
rem /a is to make the string expression to value expression
set /a num = 0
for %%x in (*.txt) do{
echo get file %%x, and content as follow:
type %%x
rem echo. is to change line
echo.
set /a num = num + 1
}
echo totally we get %x% files.
for [%var|%%var] in (set) do command
10. setlocal 语句,批处理过程中,设置局部的环境变量,不会影响系统环境变量,需使用endlocal来匹配结束
@echo off
setlocal
path = d:\
echo the local path variable is:
set path
endlocal
echo the system path variable is:
set path
setlocal {enableextension|diasbleextension} {enabledelayedextension|diabledelayedextension}
endlocal
11.shift 命令,更改批处理命令处理参数的方式
shift [/n]
rem test this by shift.bat a.txt b.txt
@echo off
:round
if "%1" == "" goto end
echo %1 's content as follow:
type %1
echo.
shift
goto round
:end
12. 通配符 * 和 ?
13. 重定向符号< ,<<和>
@echo off
echo type a.txt > b.bat
echo dir /b /w >> b.bat
echo the content of the b.bat is:
type b.bat
echo the b.bat after sorting:
sort < b.bat
14. 管道符|,左边的内容输出到右侧
@echo off
find "key" in a.txt | sort > b.txt
echo the result is:
type b.txt