批处理命令 (一)

来源:互联网 发布:windows c socket编程 编辑:程序博客网 时间:2024/06/06 01:40

最常用基本的最简单的几个命令:

ECHO STR   => 输出STR内容
ECHO OFF   => 关闭这句命令之后的所有命令回显,会显示本身命令
ECHO ON   => 打开这句命令之后的所有命令回显
@COMMAND  => 不显示@之后的命令
@ECHO OFF   => 不显示本身命令且关闭只有所有命令的回显
PAUSE     => 命令执行到这句时暂停并提示
EXIT       => 命令执行到这句退出CMD或者某个批处理
REM         => 表示此行注释,单独一行
::           => 同 REM
:LABEL       => 表示一个标签标识,利用该标识跳转定位
GOTO :LABEL     => 跳转到批处理文件中的某个标签开始执行
CALL         => 启动一个可执行程序,并且能够实现 GOTO 的跳转,执行完成后会重新回到 CALL 的地方执行
START        => 启动一个可执行程序,如果是GUI程序则会提前关闭 CMD
%[1-9]       => 执行批处理文件或者执行GOTO和CALL 跳转时顺序输入的字符串
TYPE FILE       => 输出文本文件FILE内容
ERRORLEVEL     => 使用格式 ERRORLEVEL number 执行一个程序返回值大于等于 number 则返回TRUE
NOT EXP       => 对 EXP 结果的表达式取反
EXIST FILE     => 判断 FILE 是否存在
V1 == V2     => 判断是否相等
 
例子:
@ECHO OFF
::GOTO :TEST 这个是标签
CALL :TEST 这个是标签
ECHO 这个会不会被跳过
:TEST
ECHO %1 这个是参数


==============================================================

组合命令与管道:

-------------------------------------
组合命令:& 、&& 和 ||
& 命令:按左右顺序执行命令,不管对错,所有命令都会执行完成
&& 命令:按左右顺序执行命令,只要有一个出错后面的都不会执行
|| 命令:按左右顺序执行命令,只要有一个对则后面的都不会执行


例子:
@ECHO OFF
ECHO "&" TEST & DIR MM & DIR tt.bat
ECHO ----------------------------------------
ECHO "&&" TEST && DIR MM && DIR tt.bat
ECHO ----------------------------------------
ECHO "&&" TEST || DIR MM || DIR tt.bat
PAUSE


-------------------------------------
管道命令:> 、>> 和 |
> 命令:重定向输出,覆盖原有文件中内容
>> 命令:重定向输出,追加到文件中内容后
| 命令:将左边命令的输出作为右边命令的输入,意思就是必须是两个命令连接


例子:
@ECHO OFF
DIR . > TEST
DIR . >> TEST
TYPE TEST | FIND /N "tt.bat"
PAUSE


==============================================================

功能命令:

-------------------------------------
IF 命令
基本格式:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
若 command 则用 () 包含起来,左括号在 IF 之后, 右括号在 command 后一行结束
ELSE使用
IF BOOL (
    COMMAND
) ELSE (
    COMMAND
)
扩展:
IF [/I] string1 compare-op string2 command
IF CMDEXTVERSION number command
IF DEFINED variable command


/I 开关说明要进行的字符串比较不分大小写。


EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于


-------------------------------------
CHOICE 命令:
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
/C - 指定要创建的选项列表。默认列表是 "YN"。根据顺序设置 ERRORLEVEL 值
/N - 在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。
/T - 做出默认选择之前,暂停的秒数。
/D - 在 nnnn 秒之后指定默认选项。字符必须在用 /C 选项指定的一组选择中; 同时,必须用 /T 指定 nnnn。
/M - 指定提示之前要显示的消息。如果没有指定,工具只显示提示。必须用引号包围起来。
注意:
ERRORLEVEL 环境变量被设置为从选择集选择的键索引。列出的第一个选择返回 1,第二个选择返回 2,等等。
如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回 255 的ERRORLEVEL 值。
如果用户按 Ctrl+Break 或 Ctrl+C 键,该工具会返回 0的 ERRORLEVEL 值。
在一个批程序中使用 ERRORLEVEL 参数时,将参数降序排列。


例子:
@ECHO OFF
:BEGIN
CHOICE -C ZYX /T 10 /D X /N /M "这是一个测试 Z Y重新开始 X 退出"
::/M 这是一个测试
IF ERRORLEVEL 3 (
ECHO ZHE GE SHI X
GOTO :END
)
IF ERRORLEVEL 2 (
ECHO ZHE GE SHI Y
GOTO :BEGIN
)


IF ERRORLEVEL 1 (
ECHO ZHE GE SHI Z
GOTO :BEGIN
)


:END
PAUSE


-------------------------------------
FIND 命令:
FIND [/V] [/C] [/N] [/I] [/OFF[LINE]] "string" [[drive:][path]filename[ ...]]


/V         显示所有未包含指定字符串的行。
/C         仅显示包含字符串的行数。这个和其他显示冲突
/N         显示行号。
/I         搜索字符串时忽略大小写。
/OFF[LINE] 不要跳过具有脱机属性集的文件。
"string" 指定要搜索的文本字符串。双引号必须要
[drive:][path]filename 指定要搜索的文件。


-------------------------------------
FOR 命令:
FOR %variable IN (set) DO command [command-parameters]


%variable   指定一个单一字母可替换的参数。
(set)       指定一个或一组文件。可以使用通配符。
command     指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。


在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable。而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.
普通模式:SET 为一个集合或者一个文件夹,表示 %%variable 为集合中的某一个或者该该文件夹中符合太格式的文件,不包含文件夹。
例子:
@ECHO OFF
FOR %%V IN ( 1,2,3,49,7,5,4 ) DO ECHO %%V
ECHO -------------------------------------------
FOR %%V IN ( C:/* ) DO ECHO %%V
ECHO -------------------------------------------
FOR %%V IN ( C:/*.log ) DO ECHO %%V
PAUSE


如果启用命令扩展,则会支持下列 FOR 命令的其他格式:


/D 参数:遍历所有子目录
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配。
例子:
@ECHO OFF
FOR /D %%V IN ( * ) DO ECHO %%V
ECHO ------------------------------------------
FOR /D %%V IN ( C:/Pro* ) DO ECHO %%V
:: * 任意匹配
ECHO ------------------------------------------
FOR /D %%V IN ( C:/????? ) DO ECHO %%V
:: ? 个数匹配
ECHO ------------------------------------------
FOR /D %%V IN ( C:/Program File? ) DO ECHO %%V
:: 若有前驱字符则可为0个或1个
PAUSE


/R 参数:遍历PATH中的指定SET中的目录或文件,SET 为 . 则只列举目录
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。
例子:
@ECHO OFF
FOR /R %%V IN ( *.lnk ) DO ECHO %%V
::FOR /R C:/ %%V IN ( . ) DO ECHO %%V
:: C盘小心
PAUSE


/L 参数:从 start 开始以步长为 step 到 end,不超过
FOR /L %variable IN (start,step,end) DO command [command-parameters]
该集表示以增量形式从开始到结束的一个数字序列。因此,(1,1,5)将产生序列 1 2 3 4 5,(5,-1,1)将产生序列(5 4 3 2 1)
例子:
@ECHO OFF
FOR /L %%V IN (1,1,10) DO (
ECHO %%V
)
FOR /L %%V IN (1,2,10) DO ECHO %%V
PAUSE


/F 参数:
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
或者,如果有 usebackq 选项:
FOR /F ["options"] %variable IN ("file-set") DO command [command-parameters]
FOR /F ["options"] %variable IN ('string') DO command [command-parameters]
FOR /F ["options"] %variable IN (`command`) DO command [command-parameters] 
好多不想看!!!


0 0