1、@
一般在它之后紧跟一条命令或一条语句,则此命令或语句本身在执行的时候不会显示在屏幕上。请把下面的代码保存为test.cmd文件,然后运行,比较一下两条echo语句在屏幕上的输出差异:
复制内容到剪贴板 bbs.adaiit.cn0 Y; O4 E4 L) A+ D7 K2 m& K* O" l
代码:
echo aWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载2 I1 x7 }+ |+ Q8 I
@pause阿呆IT论坛* T2 R) j0 C- m6 Y1 M
@echo bWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载+ L4 Z$ r; H4 ~; q" B1 y( t
@pauseXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载. H e/ ]1 T+ L* W
执行结果如下:
引用:* N8 Q9 B, D% Z# T/ c& s. |
C:\Documents and Settings\JM\桌面>echo a
a% p; C! g$ W. P% D5 H# y/ E
请按任意键继续...XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载: N) F- E0 k6 a; [' [5 [
b
请按任意键继续...Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载6 e+ ^& s n1 H$ I
2、%、%%
百分号用在不同的场合,有不同的含义:
① 当百分号成对出现,并且其间包含非特殊字符时,一般做变量引用处理,比如:%var%、%str%。把以下代码保存为批处理文件,运行后观察屏幕显示结果: 阿呆IT论坛4 Q6 w4 U& F* B. { w
复制内容到剪贴板 Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载$ R: ` B" C& A# \5 E9 V1 ~7 h
代码:
@echo off
set str=abc/ n+ V2 Q3 V% r/ N- B
echo 变量 str 的值是: %str%8 u2 C+ G" _; E
pause阿呆IT论坛( ~/ U$ `: ~) j$ o' i
在屏幕上将显示这样的结果:
引用:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载" f# B4 @" t# \
变量 str 的值是: abc
按任意键继续...
另外,百分号作为变量引用还有一种特殊形式,那就是对形式参数的引用,此时,单个百分号后面紧跟0~9这10个数字,如%0、%1,请看演示代码:
复制内容到剪贴板
代码:
@echo off
if defined str goto nextWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载 e* x; c7 J- b7 T- k
set str=阿呆IT论坛1 m/ z" h1 T7 m9 R6 T6 h
set /p str=请把文件拉到本窗口后回车:
call "%~0" %str%XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载+ c: |5 \5 N2 x. B# ~
pause
exit0 v9 y5 L/ R$ a! ]/ K
:next阿呆IT论坛0 a/ W" V( z# {
cls# P ^) e' t, ?1 y0 I9 v
echo 本批处理文件完整路径为:"%~0"
echo 拖到本窗口的文件完整路径为:"%~1"
goto :eof
② 出现在 set /a 语句中时,表示两数相除取余数,也就是所谓的模运算,它在命令行窗口和批处理文件中的写法略有差异:在命令行窗口中,只需要单个的%,在批处理文件中,需要连续两个百分号,写成%%。
例如:在命令行窗口中,运行 set /a num=4%2 ,则结果将显示0,因为4除以2的余数为0;如果保存为批处理文件,则此语句将略有改变:
复制内容到剪贴板
代码:阿呆IT论坛" |* r M( M( U* f% [
@echo offXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载7 d7 M( t; W- U% ?/ G7 E' f) |
set /a num=4%%2XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载5 c( ~8 b+ y1 |/ \& }: M. N. P
echo 4除以2的余数为 %num%
pause
③ 转义符号:如果要显示%本身时,需要在前面用%来转义。例如: : P% Z" w3 I' _) O j6 I
复制内容到剪贴板 阿呆IT论坛& }# ~8 q0 f# f) {- E5 {
代码:Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载0 s- ^ }( ?% Q* f* C
@echo off阿呆IT论坛+ y% x0 p' I K! ^. [5 N5 d
echo 一个百分号:%%阿呆IT论坛. P4 G2 }- f9 R- G2 A9 l' N7 _% Y, C5 e
echo 两个百分号:%%%%
echo 三个百分号:%%%%%%bbs.adaiit.cn, i, g6 a; r' ^+ u4 g4 n
pause
3、:、::XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载+ b) i' e2 W, `2 U9 s0 M
① 以:打头的单个的:表示该行是一个标签,它之后的内容是一个标签段,如:test,则表示:test之下的内容是标签段,而test是这个标签段的名,可 以用 goto test 、goto :test 跳转到该标签段或用 call :test 调用该子过程;而连续两个冒号打头表示该行内容为注释内容,实际上,:: 是个无效的标签名,:加上空格同样可以起到注释的作用,此时,::的功能和注释命令rem相同;但是,rem 注释语句中的某些命令符号如重定向符号和管道符号还是会执行,而如果用::来注释的时候,与::同处一行的所有命令或符号直接被命令解释器忽略掉,无形中 提高了注释的兼容性和整个程序的执行效率,并且在众多的命令语句中更显得醒目,所以,注释语句推荐使用::的格式。
② 在 set 语句中:和~同时使用时,: 起到截取字符串的功能。假设 set str=abcde,那么,set var=%str:~0,1% 表示截取字符串abcde的第一个字符;和=同时使用时,起到替换字符串的功能。假设:set str=abc:de,那么,set var=%str:a=1% 则表示把字符串abc:de中的a替换为1,set var=%str::=2% 则表示把字符串abc:de中的:替换为2;
4、~5 p! s0 N9 l0 N g+ O- S
① 用在 set 语句中,和:同时使用时,起到截取字符串的功能,请参考上一条的解释;
② 用在 set /a 语句中时,它是一元运算符号,表示将操作数字按位取反,例如,set /a num=~1的执行结果是-2,set /a num=~0的结果是-1
③ 用在for语句中,表示增强for的功能,能够提取到更多的信息。例如:在批处理文件的for语句中:%%~i表示去掉第一对外侧引号,%%~zi表示获 取文件的大小(以字节为单位),%%~ni表示获取文件名,%%~xi表示获取扩展名(带点号)……它们可以组合使用,如%%~nxi表示获取文件名和后 缀名。
5、>、>>
一般而言,>表示用新内容覆盖原文件内容,>>表示向原文件追加内容,此时,它们以重定向符号的身份出现;如果用在 set /a 语句中,则>表示分组,>>表示逻辑移位;) v* G8 w4 y; s% e
6、|XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载 m, _" C! ]- p3 C
一般而言,它以管道符号的身份出现,表示把在它之前的命令或语句的执行结果作为在它之后的命令或语句的处理对象,简而言之,就是把它之前的输出作为它 之后的输入,例如:echo abcd|findstr "b",表示把echo abcd的执行结果,作为findstr "b" 的执行对象,也就是在字符串abcd中查找b字符;如果test.txt中有abcd字符串,则该语句与 findstr "b" test.txt 具有同样的效果;Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载, [9 t' I, N3 _& E d
7、^XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载' @( C# @+ S" q N. u
一般而言,^以转义字符的身份出现。因为在cmd环境中,有些字符具备特殊功能,如>、>>表示重定向,|表示管 道,&、&&、||表示语句连接……它们都有特定的功能,如果需要把它们作为字符输出的话,echo >、echo | ……之类的写法就会出错——cmd解释器会把它们作为具有特殊功能的字符对待,而不会作为普通字符处理,这个时候,就需要对这些特殊字符做转义处理:在每 个特殊字符前加上转义字符^,因此,要输出这些特殊字符,就需要用 echo ^>、echo ^|、echo ^|^|、echo ^^……之类的格式来处理;
8、&
一般而言,&表示两条命令或语句同时执行的意思。如 echo a&echo b,将在屏幕上同时显示a和b字符。当几条语句含义近似或作用相同且没有先后的顺序之别时,启用&符号连接这些语句将会增加程序的可读性;阿呆IT论坛) e& B3 v# y* w4 n: T
9、&&、||XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载( ~5 g* o, X9 a* G
这是一对含义截然相反的命令符,&&表示如果它之前的语句成功执行,将执行它之后的语句,而||则表示如果它之前的语句执行失败,将执行它之后的语句;在某些场合,它们能替代 if……else…… 语句;例如:
复制内容到剪贴板
代码:bbs.adaiit.cn* A q0 R0 m q7 F
@echo off
md test&&echo 成功创建文件夹test||echo 创建文件夹test失败
pause
效果等同于如下代码:
复制内容到剪贴板
代码:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载$ r& v* b* |4 s6 ^: e4 u
@echo off
md testXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载7 m) ~) ?7 \3 q$ P
if "%errorlevel%"=="0" (echo 成功创建文件夹test) else echo 创建文件夹test失败
pause
10、()XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载" }# {# u# r! B
小括号对经常出现在for语句和if语句中,还有一些特定场合;在for和if语句中属于语句格式的要求,例如:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载+ s7 p3 @' r2 N" X
① for %%i in (语句1) do (语句2):在这条语句中,语句1必须用括号对包围,而语句2的括号对则可视情况予以抛弃或保留:如果语句2是单条语句或 用&、&&、||等连接符号连接的多条语句,括号对可以抛弃,如果语句2是有逻辑先后关系的多条语句集合,则必须保留括号对,并 且,多条语句必须断行书写;例如: XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载$ V8 |* v. y. c3 `1 A% M. d" G
复制内容到剪贴板 XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载% H7 j) [' J( ]- e# b4 z; N4 F
代码:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载7 n: G6 J/ L7 E9 T- ^+ a
@echo off
for %%i in (a b c) do echo %%i&echo --------
pauseWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载9 X+ N, C' l" P* q
也可以改写为: XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载: f) n5 P( k: J% g
复制内容到剪贴板
代码:bbs.adaiit.cn- q9 g' c# G$ j1 Y6 u
@echo off
for %%i in (a b c) do (
echo %%ibbs.adaiit.cn9 w3 y v; z. w3 [: q# N( D9 W$ v
&echo --------bbs.adaiit.cn; R5 h$ F! }) }* l4 t9 |: k# X
)
pause
② if 条件 (语句1) else (语句2):如果没有else部分,则语句1的括号对可有可无;如果有else部分,则语句1中的括号对必须保留,此时,语句2中的括号对保留与否,和上一点类似。例如:
复制内容到剪贴板 bbs.adaiit.cn7 y% B% {# `3 L, L a
代码:
@echo offWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载4 g4 C& ^/ z5 {
if exist test.txt echo 当前目录下有test.txtWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载$ H. V. [& i9 M2 m
pause* V- e4 J9 i2 g
复制内容到剪贴板
代码:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载& Q9 }, k9 q* o6 V& ?& p8 {
@echo off
if exist test.txt (echo 当前目录下有test.txt) else echo 当前目录下没有test.txt9 m$ C) y% T; E7 R: P) R8 G
pause
复制内容到剪贴板
代码:
@echo off
if exist test.txt (echo 当前目录下有test.txt) else (bbs.adaiit.cn1 Y, Y! l+ \; v% K
echo 当前目录下没有test.txtXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载, @6 d- y# N- b% I# U7 x
pause
cls
echo 即将创建test.txt文件
cd.>test.txt&&echo 成功创建test.txt
)XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载* g) K8 M+ N$ e) A
pausebbs.adaiit.cn8 m( G$ x+ V; _
③ 特定场合下使用括号对,不但可以使代码逻辑清晰,增强可读性,还可能会减少代码量。比如用echo语句构造多行文本内容的时候:
复制内容到剪贴板
代码:阿呆IT论坛1 e4 r. g8 u. V5 s. |
@echo off阿呆IT论坛2 l! t5 e, p! n7 C1 B9 ], v, T1 d
(
echo 第一行bbs.adaiit.cn2 C- P' m7 _9 J' @9 p
echo 第二行
echo 第三行' B) d }( Q9 } o7 C% y0 r) v U
)>test.txt阿呆IT论坛4 ~1 J" g' p" v8 r* ^
start test.txt
如果不使用括号对的话,则需要使用如下代码: 阿呆IT论坛. e( Z0 Y2 h" i. @; [/ ^& S
复制内容到剪贴板
代码:
@echo offXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载: |* Q' D$ G: T/ g. P0 e
echo 第一行>test.txt
echo 第二行>>test.txt
echo 第三行>>test.txt
start test.txt
11、+、-、*、/阿呆IT论坛8 j! }% C6 Z6 e @6 o& l
在 set /a 语句中,这些符号的含义分别为:加、减、乘、除。例如:set /a num=1+2-3*4/5。需要注意的是,这些运算符号遵循数学运算中的优先级顺序:先乘除后加减,有括号的先算括号,并且,直接忽略小数点,因此,刚 才那个算式的结果是1而不是0或0.6。阿呆IT论坛( u- `" c3 P& B. l9 P
另外,有可能会在代码中看到这样的写法:set /a num+=1、set /a num-=1、set /a num*=1 和 set /a num/=1,这些表示累加、累减、累乘、累除,步长都是1,展开后的完整写法为:set /a num=num+1、set /a num=num-1、set /a num=num*1 和 set /a num=num/1(set /a 语句中,变量引用可以忽略百分号对或感叹号对,set /a num=%num%+1 与 set /a num=num+1 等同)
12、equ、neq、lss、leq、gtr、geq
这几个命令符是if语句中常用到的数值比较符号,取自英文的关键字母,具体的含义为:
引用:
命令符号 含义 英文解释XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载. Q! L" A0 Z7 ^' N' X |
EQU 等于 equalXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载( R7 L# x/ P% D+ m/ G# E- ~' q
NEQ 不等于 not equalbbs.adaiit.cn8 q( [! f# N4 b0 Y1 X) I2 u
LSS 少于 less than
LEQ 少于或等于 less than or equalWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载( [1 h3 R, s6 X2 L! _
GTR 大于 greater than
GEQ 大于或等于 greater than or equal
批处理的常见命令Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载( ~+ Z! M& H r( Y0 V
REM阿呆IT论坛. j) m0 P, m! _/ I) q4 ^3 W, t& u/ _
ECHO
GOTOXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载6 e8 R, b; O0 l9 M
CALLbbs.adaiit.cn% m6 G( a0 g C m1 o$ X* ^
PAUSE/ [2 |7 }9 F& r1 i1 D4 s
IF
还有(FOR,SETLOCAL,SHIFT)基于这几个命令比较难,不适合放在一日一动画里
批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。
这些命令统称批处理命令。Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载1 \" V+ G: d7 ~$ i, w- {
介绍命令
1、REM
REM是个注释命令,一般用来给程序加上注解,该命令后的内容在程序执行时,将不会被显示和执行。阿呆IT论坛+ R$ ~% I$ X3 d; \
例:REM 这个命令就是注释bbs.adaiit.cn, i# j6 z, ` ^/ a# c* r
这一句将不会被执行bbs.adaiit.cn& }9 E% z6 E8 h
2、ECHO" |6 _! ^ x& c: m% g8 S
ECHO是一个回显命令,主要参数有OFF和ON。一般用ECHO MESSAGE来显示一个特定的消息。XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载! f; i( P0 T" m& F' `
例:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载! A" W- \4 S; [
Echo off
Rem 以上代表关闭回显(就是不显示所执行的命令)阿呆IT论坛' \/ o; e0 v" s# Y/ V8 E
Echo 这个就是消息(message)
Rem 以上代表显示“这就是消息(message)”这列字符Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载6 _% ]$ W$ l9 J
咱们来看看执行结果:阿呆IT论坛# H' j* Z$ k0 v% x" z: P
5 W6 s) _. O q, `: w
3、GOTObbs.adaiit.cn" _$ w6 \/ W& c2 m1 u
GOTO会点编程的朋友就会知道这是跳转的意思。! L+ e4 G& Q {$ W' `) n- }
在批处理中允许以“:XXX”来构建一个标号,然后用GOTO XXX直接来执行标号后的命令。Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载( y9 R- ?: \2 R, `8 R
例:
:lablebbs.adaiit.cn+ ]! ]& b% o* v$ \" k
REM 上面就是名为LABEL的标号
DIR C:\XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载+ @8 ?* w g* `' k" r
DIR D:\
GOTO lable
REM 以上程序跳转标号LABEL处继续执行
咱们来看看结果:
4、CALLWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载' Z4 l H- ^- [& w) }7 u0 a
CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理
例:阿呆IT论坛' o9 @! l) {5 J& r* t+ B
创建一个2.BAT,内容如下
ECHO 这就是2的内容9 h" b1 s6 x. d" o) X
创建一个1.BAT,内容如下
ECHO 这是1的内容
CALL 2.BATXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载- C& y& B- ]* j2 |4 M2 P2 h8 D
ECHO 1和2的内容全部显示完成。
执行1.BAT,来看看结果:Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载% }0 a4 _5 c8 ~8 ~) h
5、PAUSE
PAUSE,玩游戏的人都知道,暂停的意思0 g, B2 f5 C6 G0 f
在这里就是停止系统命令的执行并显示下面的内容。阿呆IT论坛) |& r4 }- x; d- ?
例:
PAUSEXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载% p/ \2 e' p E Y! P$ A! B0 C
6、IFbbs.adaiit.cn/ [* g& W" Q- L* G
IF 条件判断语句,语法格式如下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename commandXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载4 Z. I7 d4 Q! H
解释下:bbs.adaiit.cn3 y7 H6 ~( N1 e) J) c7 |8 {1 y0 N
[NOT]:将返回结果取反值,就是“如果没有”的意思
ERRORLEVEL:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载; G+ I. ~% K2 _( a7 _9 P6 y: V1 K
是命令执行完成后返回的退出值阿呆IT论坛! o* E0 d* }2 A, E8 n) ?& c
Number:0 m# L9 v8 W# f$ | k$ p0 X2 n: P# f
退出值的数字取值范围0~255,判断时值的排列顺序应该由大到小。返回的值大于等于指定的值时,条件成立
string1==string2:
string1和string2都为字符的数据,英文内字符的大小写将看作不同,这个条件中的等于号必须是两个(绝对相等的意思)
条件相等后即执行后面的command% P- i% v @2 ^0 k/ L
EXIST filename:阿呆IT论坛0 p% m' M" K9 N) d
为文件或目录存在的意思
IF ERRORLEVEL这个句子必须放在某一个命令的后面,执行命令后由IF ERRORLEVEL 来判断命令的返回值。
例:bbs.adaiit.cn: j# i5 X' M& y
(1)' l2 ]( E* d# D3 }- ?1 e: z
IF [NOT] ERRORLEVEL number command阿呆IT论坛/ l+ g5 y% z! I" h! k, `& `$ v& W
检测命令执行完后的返回值做出判断bbs.adaiit.cn x" P% L( a/ M" h
echo off阿呆IT论坛/ z2 M: _9 T2 i Z# h# |2 z
dir z:
rem 如果退出代码为1(不成功)就跳至标题1处执行XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载- ?0 w& m8 q- ]$ J% y# i* `6 ^3 A4 t' c
IF ERRORLEVEL 1 goto 1
REM 如果退出代码为0(成功)就跳至标题0处执行bbs.adaiit.cn( r, |( f H E' w
IF ERRORLEVEL 0 goto 0Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载% ?5 M% s* g, o/ ]
:0
echo 命令执行成功!
Rem 程序执行完毕跳至标题exit处退出
goto exit$ {; v% `$ }$ P/ B# @3 Q6 m
:18 F- o* }6 u0 w5 S! U' G8 X/ H
echo 命令执行失败!
Rem 程序执行完毕跳至标题exit处退出阿呆IT论坛 r7 ~/ D! \6 x v( s# A, h# n: N
goto exit阿呆IT论坛0 _8 J/ A8 k# S$ M R7 _
:exitXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载7 H; H- Y8 v m# u$ u% J
Rem 这里是程序的出口XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载3 h; x8 q3 Q0 _5 f
(2)IF string1==string2 command! M# q2 \: E- U8 K; ^9 u
检测当前变量的值做出判断
ECHO OFFXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载6 e: M) }6 T% i# I5 ?+ p
IF %1==2 goto noWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载7 d# q/ M9 {. d
Echo 变量相等!XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载) N7 M" h/ B( v y# E! l
goto exitWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载5 T/ ^0 C* N9 A" o- c, l2 s$ X+ Q
:no
echo 变量不相等
goto exit阿呆IT论坛6 |9 u' Q, V! j; M4 O: Z4 a6 O
:exitXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载! o2 Q. E7 y2 z* U8 {- o
看看效果,敲击这个命令1.bat 数字6 R( V; r% y8 G: Y% N* B4 l
(3)IF [NOT] EXIST filename command
发现特定的文件做出判断 bbs.adaiit.cn, w" [$ R3 j. i# J1 i5 @# X
echo off1 i2 A) G- ^. D2 g$ n6 A$ B( }
IF not EXIST autoexec.bat goto 1XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载 h% a, |/ I2 |1 ?6 t- a
echo 文件存在成功!
goto exitXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载: ~' `0 H+ B+ d) m* `
:1XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载 a3 `( ]' U4 K% Y
echo 文件不存在失败!
goto exitbbs.adaiit.cn8 R1 w% G: {8 m
:exit
这个批处理大家可以放在C盘和D盘分别执行,看看效果
如何制作批处理文件XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载# F/ D2 s7 f" o0 t: {
上次和大家讲了那么多批处理命令,还没给大家讲如何制作批处理文件阿呆IT论坛5 c" o+ w7 ?9 t( l; ^5 M9 C' S( H
呵呵,失策失策bbs.adaiit.cn, p6 Y2 q, D! v( D! S( Y! m
制作批处理的方法有三种阿呆IT论坛" g+ F4 O! N2 k0 J, S9 b
第一种就是在WIN界面操作
首先咱们先建立个TXT文本文件,然后把命令打进去,最后把他的扩展名改为BAT就可以了bbs.adaiit.cn! O$ j, L) N( x+ l- @9 @, s7 `
有些人的电脑没有显示扩展名,怎么办呢?好办在文件夹选项里改把“隐藏文件的扩展名”这个选项勾掉就可以了
第二种方法是在DOS中创建
有些时候我们得到的只是TELNET的SHELL,如何在这里制造批处理成了麻烦bbs.adaiit.cn3 e0 V% E7 F, \, H9 b
没关系,今天来介绍COPY命令,COPY不是拷贝的意思吗?怎么还能制造批处理文件$ r$ _) n) j. s1 u. n w" p
就是这么决,来看看吧
copy con 1.bat
dir C:
^Z
这样就做好了一个批处理文件
第三种方法也是在DOS下操作的
是用ECHO命令XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载7 `9 _& t! y9 k( G/ G1 Y- a; n
echo dir c:\ >1.batbbs.adaiit.cn( F/ X% i y6 }
echo dir d:\ >>1.bat
echo dir e:\ >>1.bat
一.简单批处理内部命令简介
1.Echo 命令+ {+ S L# V3 T" [# n0 r6 d
打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。
语法3 L) l. [* j1 F; u- F
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载- |& o) }4 @: v
2.@ 命令阿呆IT论坛6 t) q6 O% g, C, o- q1 q S
表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。
Sample:@echo off( `4 L7 k0 [: B" C* C: @& I! g2 {* M
@echo Now initializing the program,please wait a minite...XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载7 |# Z9 B5 J& W% ?- U0 ~; d( P
@format X: /q/u/autoset (format 这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)
3.Goto 命令
指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。
语法:goto label (label是参数,指定所要转向的批处理程序中的行。)
Sample:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载* v i/ Z$ g9 J# M
if {%1}=={} goto noparmsXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载* w0 {; z8 Q( y3 J2 e @4 g
if {%2}=={} goto noparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber4 o" r" F, e& E, o
goto end
标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一阿呆IT论坛1 b) H# }/ g" \. c9 Q5 V
些说明这样你别人看起来才会理解你的意图啊。bbs.adaiit.cn1 D' j! r9 I+ u9 N9 m8 K$ ^
4.Rem 命令
注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。bbs.adaiit.cn# k: m6 i* f* V) U$ V3 X1 {
Rem Message
Sample:@Rem Here is the description.
5.Pause 命令bbs.adaiit.cn; \/ X4 `6 k) \
运行 Pause 命令时,将显示下面的消息:Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载, E5 v& F$ @$ u8 w @' h0 y+ h/ P
Press any key to continue . . .
Sample:
@echo off
:begin
copy a:*.* d:\backWindows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载8 I& F: h) |: c
echo Please put a new disk into driver AXP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载7 @" d/ x; }" ^; H1 x, [5 _
pause
goto begin6 r$ x0 f3 @' s4 f0 v
在这个例子中,驱动器 A 中磁盘上的所有文件均复制到d:\back中。显示的注释提示您将另一张磁盘放入驱动器 A 时,pause 命令会使程序挂起,以便您更换bbs.adaiit.cn# a1 O% I8 ^% {+ ?2 \2 d
磁盘,然后按任意键继续处理。
6.Call 命令XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载, n( v" F l3 b& p& w
从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call 命令接受用作调用目标的标签。如果在脚本或批处理文件外使用 Call,它将不会XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载+ L+ y! M7 {* L. ~5 r- {
在命令行起作用。XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载8 v! [& f3 c# U
语法
call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]]
参数
[Drive:}[Path] FileName
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。( Y0 j# X+ G. G8 Z' q' ]" Y
7.start 命令( t9 a, K1 g" b
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载6 o# g# h; X D" F) G: n
入侵常用参数:" C( e! P/ m1 |9 d7 @" S
MIN 开始时窗口最小化bbs.adaiit.cn: n3 ?' r m( Q6 c
SEPARATE 在分开的空间内开始 16 位 Windows 程序
HIGH 在 HIGH 优先级类别开始应用程序XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载/ P& x) ` P* ^8 X6 `. m/ s
REALTIME 在 REALTIME 优先级类别开始应用程序 v- _" M; o- n" t
WAIT 启动应用程序并等候它结束1 Q2 A, W+ }/ A0 [3 w
parameters 这些为传送到命令/程序的参数
执行的应用程序是 32-位 GUI 应用程序时,CMD.EXE 不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。
8.choice 命令
choice 使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234…Windows 7|Linux|Unix|Ubuntu|Fedora|网络安全|网络管理|IT认证|软件下载2 i* k9 ^% A! j0 X6 {/ I( E
…
如: choice /c:dme defrag,mem,end
将显示
defrag,mem,end[D,M,E]?阿呆IT论坛. P% k5 d% B& W9 G
Sample:XP,Vista,Server 2003,Server 2008,Windows 7,Linux,Unix,Ubuntu,Fedora,web开发,软件设计,网络管理,网络安全,I T认证,软件下载* }! J# @: o6 T9 N" N! @6 Y
Sample.bat的内容如下:
@echo off
choice /c:dme defrag,mem,endbbs.adaiit.cn1 G8 R# d* W5 I6 f4 |
if errorlevel 3 goto defrag (应先判断数值