显示信息,或将命令回显打开或关上。编程
ECHO [ON | OFF]windows
ECHO [message]测试
要显示当前回显设置,键入不带参数的 ECHO。spa
暂停批处理程序,并显示如下消息:命令行
请按任意键继续. . .code
清除屏幕。token
在批处理文件或 CONFIG.SYS 里加上注解或说明。ip
REM [comment]rem
PS:其实能够用"::"代替"REM",能够提升执行速度,不过REM的兼容性更好,我仍是建议你们用rem注释字符串
1.给变量赋值(撤销)
@echo off set str=My name is Xiao echo %str% rem 批处理中的变量通常须要用%来扩展,详见特殊符号一节 pause>nul
@echo off set str=ABCDEFGHIJKLMN echo %str% set str= echo;%str% rem 还记得加";"能够实现什么效果吗?一个空行,为何要这么作呢?想不出来的话去掉这个";"试试 pause>nul
2.等待用户输入数据(开关/P)
@echo off set /p name=请输入你的姓名: set /p age=请输入你的年龄(纯数字): echo 因此,%name%今年%age%岁咯? pause>nul
3.计算(开关/A)
@echo off set /a num=(12*2)+(13*4) echo (12x2)+(13x4)=%num% pause>nul
() - 分组 ! ~ - - 一元运算符 * / % - 算数运算符 + - - 算数运算符 << >> - 逻辑移位 - 按位“与” ^ - 按位“异” | - 按位“或” = *= /= %= += -= - 赋值 &= ^= |= <<= >>= , - 表达式分隔符
4.显示当前已定义变量
@echo off @set @pause>nul
1.IF的第一种用法,比较字符串
@echo off set /p PW=请输入密码: if %PW%==bat ( echo YES! ) ELSE ( Rem [else] 为可选参数,表示不然,即若是变量PW等于bat则输出YES!不然输出NO! echo NO! ) pause>nul
2.IF的第二种用法,比较数字
@echo off set /p num1=请第一个输入数字: set /p num2=请第二个输入数字: if "%num1%" gtr "%num2%" ( echo 第一个数字大 ) ELSE if "%num1%" EQU "%num2%" ( echo 同样大 ) ELSE ( echo 第二个数字大 ) pause>nul
------比较运算符----- EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于
3.IF的第三种用法,检测文件(夹)是否存在
@echo off if exist C:\windows ( echo 你的C盘有windows文件(夹^) ) else ( echo 你的C盘没有windows文件(夹^) ) pause>nul
4.IF的第四种用法,检测变量是否被定义
@echo off set var=aiwozhonghua if defined var ( echo 变量var已被定义,它的值为%var% ) else ( echo 变量var没有被定义 ) pause>nul
5.IF的第五种用法,判断返回值(ERRORLEVEL)
@echo off echo 1234>>test.txt if errorlevel 0 ( echo 写入成功! ) else echo 写入失败 pause>nul
将 cmd.exe 导向到批处理程序中带标签的行。
GOTO label
label 指定批处理程序中用做标签的文字字符串。
标签必须单独一行,而且以冒号打头。
若是命令扩展名被启用,GOTO 会以下改变:
GOTO 命令如今接受目标标签 :EOF,这个标签将控制转移到当前
批脚本文件的结尾。不定义就退出批脚本文件,这是一个容易的
办法。有关能使该功能有用的 CALL 命令的扩展名描述,请键入
CALL /?。
@echo off set /p pw=请输入密码: if "%pw%"=="bathome" goto yes goto :eof rem 未定义的:eof会退出脚本文件 :yes echo 密码正确! pause>nul
1.FOR
对一组文件中的每个文件执行某个特定命令。
FOR%variableIN (set) DO command [command-parameters]
%variable 指定一个单一字母可替换的参数。
(set) 指定一个或一组文件。可使用通配符。
command 指定对每一个文件执行的命令。
command-parameters
为特定命令指定参数或命令行开关。
@echo off for %%i in (*.txt) do echo %%i ::这段代码会显示当前文件夹下全部的txt文件 pause>nul
2.FOR /L
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 %%a in (1 1 5) do echo %%a pause>nul
4.FOR /D
FOR /D %variable IN (set) DO command [command-parameters]
若是集中包含通配符,则指定与目录名匹配,而不与文件
名匹配。
这个命令的用法和上面差很少,只不过是枚举目录名,不详解了
5.FOR /F
or /f是一个非(丧)常(心)复(病)杂(狂)的命令...
让咱们从它的第一个用法来说:
FOR /F ["options"] %variable IN (file-set) DO command [command-parame
@echo off echo 1,1 2,1 3,1 4,1;>>test.txt echo A1,2 2,2 3,2 4,2;>>test.txt echo 1,3 2,3 3,3 4,3;>>test.txt echo A1,4 2,4 3,4 4,4;>>test.txt rem 以上代码在当前文件夹下生成了一个test.txt,打开看看? For /F %%i In (test.txt) Do Echo %%i pause>nul For /F "tokens=2" %%i In (test.txt) Do Echo %%i pause>nul For /F "tokens=3" %%i In (test.txt) Do Echo %%i pause>nul For /F "tokens=4" %%i In (test.txt) Do Echo %%i pause>nul
for /f 默认以空格为分隔符,将每一行分割为几个元素,而tokens就表示取第几个元素.但假如咱们要取的不是一个元素呢?须要所有显示出来怎么办?
tokens=* 表示取全部元素,用%%i输出
@echo off rem test.txt已经有了,就不生成了 for /f "delims=*" %%i in (test.txt) do echo %%i pause>nul
for /f同也能够处理字符串
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
字符串须要用双引号引发来,其他用法同样,不过这里就要讲到usebackq参数了,for /f是支持处理多个文件的,文件直接用空格隔开(某些符号也能够),假如文件名中含有空格怎么办呢?那好像只能用双引号引发来了,可是用双引号引发来会被 识别成字符串的,这时就要请出usebackq参数了,加上这个参数,带引号的字符串也会被识别为文件~
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
用for /f来处理命令执行的结果,命令要用单引号引发来
例:
@echo off for /f "skip=3" %%i in ('tasklist') do echo;%%i pause>nul
~I - 删除任何引号("),扩充 %I %~fI - 将 %I 扩充到一个彻底合格的路径名 %~dI - 仅将 %I 扩充到一个驱动器号 %~pI - 仅将 %I 扩充到一个路径 %~nI - 仅将 %I 扩充到一个文件名 %~xI - 仅将 %I 扩充到一个文件扩展名 %~sI - 扩充的路径只含有短名 %~aI - 将 %I 扩充到文件的文件属性 %~tI - 将 %I 扩充到文件的日期/时间 %~zI - 将 %I 扩充到文件的大小 %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个彻底合格的名称。若是环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串 组合修饰符来获得多重结果: %~dpI - 仅将 %I 扩充到一个驱动器号和路径 %~nxI - 仅将 %I 扩充到一个文件名和扩展名 %~fsI - 仅将 %I 扩充到一个带有短名的完整路径名 %~dp$PATH:i - 查找列在路径环境变量的目录,并将 %I 扩充 到找到的第一个驱动器号和路径。 %~ftzaI - 将 %I 扩充到相似输出线路的 DIR ===================================================
1. IF-EXIST
@echo off IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist pause>nul
若是C:\存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,若是不存在,批处理就会提示你该文件不存在。
说明: (1) IF EXIST 是用来测试文件是否存在的,格式为 IF EXIST [路径+文件名] 命令 (2) test2.bat文件中的%1是参数,DOS容许传递9个批参数信息给批处理文件,分别为%1~%9(%0表示test2命令自己) ,这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。
二、IF-ERRORLEVEL
IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,并且返回值必须依照从大到小次序顺序判断。
@ECHO OFF XCOPY test.BAT D: IF ERRORLEVEL 1 ECHO 文件拷贝失败 IF ERRORLEVEL 0 ECHO 成功拷贝文件 pause>nul