批处理基本命令一

上一篇 / 下一篇  2012-09-27 22:44:45 / 个人分类:批处理

p'bn}L ra@o)q0批处理文件是无格式的文本文件,扩展名为bat或cmd,包含了一条或多条命令,可以双击执行,也可以在cmd中调用,直接输入脚本路径及名称(带不带扩展名都可),执行后没有错误则返回为0,有错误返回为1或其他值51Testing软件测试网:h"l+[Q7s;p

51Testing软件测试网L7@6u4cJe Pd/s

echo命令
/|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软件测试网hz R ^e

51Testing软件测试网eG[wB#m2`

rem命令51Testing软件测试网$n0w:K5y [i\?
批处理中的注释51Testing软件测试网1B*[;cX9z
rem [comment]
5x _:PC)yT0echo 为on时在屏幕上显示注释
6wS$K-c s~F1o k0不带参数可显示空白行51Testing软件测试网|1Zr o2G!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软件测试网%cR2mMtc M0A
例:51Testing软件测试网 m3{2~enb
@echo off51Testing软件测试网SI:}Wf7Z
:begin51Testing软件测试网*ez+g(G l-Zu
copy a *.*51Testing软件测试网 A~]/H^Z I8]B
echo please put a new disk into drive A51Testing软件测试网.r_3ju)Z
PAUSE
*N%?(X(a Q$m4r/BZ I0GOTO BEGIN
b?(N!Q/?9m:}(f0PAUSE命令暂停程序,等待用户插入A盘,然后再跳转到begin,从头之星,如果一直没有插入,则一直循环,可以按ctrl+c终止程序

B B^^2R0

1_{qIR!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@`Yt

call命令
J BW T6ReV2L0调用另一个批处理程序,或调用标签(类似于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'X R 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软件测试网fCY1_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"JH r/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软件测试网LEC3tX-m(B:_e
if errorlevel 1 (echo fail) else echo succesed
$mr6\'_(w6Y0if %errorlevel%==0 echo suscced
0Y X7y D{n0if exist c:mydir\nul goto process  判断mydir目录是否存在
5Au V`,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 XS I`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#v O"vU%Z9z

51Testing软件测试网j'A6} j%yT Sy!_

Shift51Testing软件测试网p$L^d:JS;P.](Y
更改批处理文件中批处理参数的位置。51Testing软件测试网VA:nb[+u
批处理的参数使用将在下一张介绍

7\.J-|6^ v)XW$?|!~0

X*K T!@O0@echo off51Testing软件测试网q+Up]JiLmn
set todir=%151Testing软件测试网K7oU jMS+h
:getfile
$uP ML4_%`$m0shift
})vwX+v E"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{'zd8~0调用,假设文件名为mycopy.bat51Testing软件测试网REe9f7PdngY
mycopy d:\ 001.txt 002.txt 将当前目录下的001.txt 002.txt复制到d盘51Testing软件测试网 ~$m$Ur/b5kc

51Testing软件测试网V6e0j7[uD+g {us

setlocal和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

"Yq:u;c*?a0

3O:R2Acno}"w7q0批处理中copy命令式默认不提示覆盖的,以上程序,设置copycmd环境变量,为提示覆盖,在endlocal后设置的环境变量将不再起作用,即,copy命令恢复不提示覆盖51Testing软件测试网0R%PT1a;K*q5bm

'gS(dV0g!I6K0 51Testing软件测试网TK4{1e Y$K x9Rq

51Testing软件测试网K%R:E;EhtV,G[

 51Testing软件测试网Co] F'S1`!TgS4HT


TAG:

 

评分:0

我来说两句

Open Toolbar