p'bn}Lra@o)q0批处理文件是无格式的文本文件,扩展名为bat或cmd,包含了一条或多条命令,可以双击执行,也可以在cmd中调用,直接输入脚本路径及名称(带不带扩展名都可),执行后没有错误则返回为0,有错误返回为1或其他值51Testing软件测试网:h"l+[ Q7s;p
51Testing软件测试网L7@6u4cJePd/secho命令
/|t9_L
X I-E[0打开或显示命令回显功能,或显示消息。没有带任何参数,则显示当前回显设置51Testing软件测试网:`HUpa%X1C j)Q
语法
kGG1nv\ f0echo [{on|off}] [message]
)F1B0gDG!h0echo on 打开命令回显51Testing软件测试网7A5z1zM2e7jS6\
@echooff 关闭命令回显且不显示echo off这条命令51Testing软件测试网9_T.E@9Q
rV
echo message 显示信息(不受echo off影响)
[0R4W ?R
YlCQ$B0echo ^| 显示管道字符|51Testing软件测试网!lcMYN^3L
echo. 显示空白行,其实echo后紧跟其他字符一些字符也是可以显示空白行大家可自行研究51Testing软件测试网hzR ^e
51Testing软件测试网eG[wB#m2`rem命令51Testing软件测试网$n0w:K5y [ i\?
批处理中的注释51Testing软件测试网1B*[;cX9z
rem [comment]
5x
_:PC)yT0echo 为on时在屏幕上显示注释
6wS$K-c s~F1ok0不带参数可显示空白行51Testing软件测试网|1Zro2G!eFF6P
rem this is comment51Testing软件测试网$r|oq"D'q
b*Eh(V
v}rd0pause51Testing软件测试网C$K$WDT};xK\
暂停批处理命令51Testing软件测试网P'F"ME},n#?4X8j A
执行该命令,将显示以下信息51Testing软件测试网"gu`5q2@2q1t
press any key to continue
,\&[Y ?k&t0如果要停止按ctrl+c ,按Y51Testing软件测试网%cR2m Mtc
M0A
例:51Testing软件测试网m3{2~e nb
@echo off51Testing软件测试网SI:}Wf7Z
:begin51Testing软件测试网*ez+g(G l-Z u
copy a *.*51Testing软件测试网 A~]/H^Z
I8]B
echo please put a new disk into drive A51Testing软件测试网.r_3ju)Z
PAUSE
*N%?(X(aQ$m4r/BZ I0GOTO BEGIN
b?(N!Q/?9m:}(f0PAUSE命令暂停程序,等待用户插入A盘,然后再跳转到begin,从头之星,如果一直没有插入,则一直循环,可以按ctrl+c终止程序
BB^^2R01_{qI R!d/g0GOTO命令
pt(e%MFj0跳转至标签所示的行执行,goto命令只使用标签的前8个字符
K \;uy[#_p0语法
g1c-^v.E~
_Y&i0goto label
.M2w(c6N0],~Q0标签的形式以冒号开头,:label label后的命令只能被goto执行,即程序直接执行到该行时将不做处理51Testing软件测试网%mhV |T _yZ:s
goto:EOF跳转到程序结尾处,则可以不定义该标签
g4?0Zw]^n0og051Testing软件测试网,tQ@`Ytcall命令
JBWT6ReV2L0调用另一个批处理程序,或调用标签(类似于goto)51Testing软件测试网;t.R:\7Ee4[
语法
&t$E*z]`.l/]?0call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]51Testing软件测试网
t| T0fo6SQ4S$lmO
call san.bat 在附程序中调用子程序51Testing软件测试网 U#QEEnF7~
call :label 在本程序中调用lebel标签51Testing软件测试网[B\)q'XR G4p
51Testing软件测试网V.U3|H[
y"S9b@echo off51Testing软件测试网&C'U JAl?
call :begin
1C-P4f:B
I
]8]z/e0echo 第二遍才执行
C'_,{rYj
x&|0:begin
2m:cQ1l]-W2\o9yK0echo call 跳转过来的51Testing软件测试网^
n8Jb&v"pfuu6N
pause51Testing软件测试网f CY1_a&^w
51Testing软件测试网(X*o&A&i]w:D"y执行结果为:51Testing软件测试网#[%Z$Jp;P0Ae!u:U
call 跳转过来的
|
r1Y\'}-}Z*H3x0请按任意键继续. . .
#e Q6CzT8}0第二遍才执行51Testing软件测试网^Q`x4R
call 跳转过来的51Testing软件测试网h(T4zf"JHr/kL-l
请按任意键继续. . .
x%QF~K.xLKK%FZ051Testing软件测试网"f(?]t{d9c)|if命令51Testing软件测试网 chX#k"^;l(\d
条件语句51Testing软件测试网 r,W,EBH${
语法
:T8{&my4I({
^*P\0if [not] errorlevel number command [else expression]51Testing软件测试网)i*JNX5|y,Y;er6W,m
if [not] string1==string2 command [else expression]51Testing软件测试网1F`c
IWn3R
if [not] exist filename command [else expression]51Testing软件测试网,]7}R.RD\\2}
T%CS
51Testing软件测试网w,Z3WISJi例:51Testing软件测试网LE C3tX-m(B:_e
if errorlevel 1 (echo fail) else echo succesed
$mr6\'_(w6Y0if %errorlevel%==0 echo suscced
0YX7y
D{n0if exist c:mydir\nul goto process 判断mydir目录是否存在
5AuV`,kWxrH0if exist mytxt (edit mytxt) echo file not exist51Testing软件测试网s5`+@na'M2ZhP
if defind myvar echo 变量已定义 判断变量myvar是否定义51Testing软件测试网
|'X6}@.Va4Ku
8O0b_Fj0for命令51Testing软件测试网;Edw CM u
[S
P
遍历一组文件并执行特定命令
,P3N:D8{,R1FH0语法51Testing软件测试网C.wPG_8R6u
for {%variable|%%variable} in (set) do command [ CommandLineOptions]
!^/L
H$n8sE#kZ+b;M0这个命令还是比较复杂的,不懂之处请自行查看windows帮助文档
O*j7U.I(k:Q0%variable用在命令提示符里,%%variable用在批处理文件里
5t_5g }$B0D XSI`6J0variable可以使用0-9意外的任何字符
Wk"nt?+_7x
U;Q9D0set可以是单个或多个文件组,也可以是通配符51Testing软件测试网#d\m8G2?
for %c in (*.txt) do type %c 显示当前目录所有txt文件51Testing软件测试网7P1Hm
EcC{3Ws
for /r d:\test %%f in(.)do move %%f e:\test 移动d盘test目录所有文件到e盘51Testing软件测试网$YJ1l"H4k-f#vO"vU%Z9z
51Testing软件测试网j'A6} j%yTSy!_Shift51Testing软件测试网p$L^ d:JS;P.](Y
更改批处理文件中批处理参数的位置。51Testing软件测试网VA:nb[+u
批处理的参数使用将在下一张介绍
7\.J-|6^
v)X W$?|!~0X*K
T!@O0@echo off51Testing软件测试网q+Up]JiLmn
set todir=%151Testing软件测试网K7oUjMS+h
:getfile
$uPML4_%`$m0shift
})vwX+vE"W0if "%1"=="" goto end
&G
NH$J[@0copy %1 %todir%
/r$ld!~xE]0goto getfile51Testing软件测试网#g@*d'Jy*Zy/o4eF
:end51Testing软件测试网4Xq'ldS
set todir=
)_0U)?5oESLX0echo All done51Testing软件测试网{i)}_G?-?
0{1v-Z^ E {'z d8~0调用,假设文件名为mycopy.bat51Testing软件测试网REe9f7P dngY
mycopy d:\ 001.txt 002.txt 将当前目录下的001.txt 002.txt复制到d盘51Testing软件测试网~$m$Ur/b5kc
51Testing软件测试网V6e0j7[uD+g{ussetlocal和endlocal51Testing软件测试网D/a P^x
设置批处理中的环境变量本地化51Testing软件测试网/eG+U&J`0@+|1U
如51Testing软件测试网8Cj^X2gGz }
@echo off
%MZC4T;jgsHc/V0set local51Testing软件测试网fH R4p|.ZNxP
set copycmd=copy /-Y
]uve3X^0copy ***51Testing软件测试网
@$a!vo\Z}
end local
"Y q:u;c*?a03O:R2Acno}"w7q0批处理中copy命令式默认不提示覆盖的,以上程序,设置copycmd环境变量,为提示覆盖,在endlocal后设置的环境变量将不再起作用,即,copy命令恢复不提示覆盖51Testing软件测试网0R%PT1a;K*q5bm
'gS(dV0g!I6K0 51Testing软件测试网TK4{1e
Y$Kx9Rq
51Testing软件测试网K%R:E;EhtV,G[ 51Testing软件测试网C o]F'S1`!TgS4HT