在批处理程序中执行条件处理。如果 if 命令中指定的条件为真,Windows 将执行该条件后的命令。如果条件为假,Windows 将忽略
if 子句中的命令,并执行 else 子句中的任何命令(如果已经指定了命令)。
if [not]
errorlevel number command [else expression]
if [not] string1==string2 command [else
expression]
if [not]
exist filename command [else expression]
启用了命令扩展:
if [/i] string1 compare-op string2 command [else
expression]
if cmdextversion number command [else
expression]
if defined variable command [else
expression]
参数
not
指定只有当条件为假时 Windows 才能执行该命令。
errorlevel number
只有当前一个程序返回大于或等于 number 的退出代码时,才能指定真条件。
command
指定在符合前面的条件时 Windows 将执行的命令。
string1==string2
只有当 string1 和 string2 相同时才能指定真条件。这些值可以是文字字符串或批处理变量(例如,%1)。文字字符串不需要引号。
exist filename
如果 filename 存在,则指定真条件。
compare-op
以下三字母比较操作符中的一个:
操作符 说明 EQU 等于 NEQ 不等于 LSS 少于 LEQ 少于或等于 GTR 大于 GEQ 大于或等于
/i
指定 /i 开关时,将强制字符串比较按忽略大小写情况进行。/i 开关也可以用于
if 的 string1==string2 格式。这些比较是通用的,如果 string1 和
string2 都由所有的数字组成,那么字符串将被转换为数字并且将执行数字比较。
cmdextversion number
cmdextversion 条件的作用就像是 errorlevel,但它需要与 Cmd.exe 的“命令扩展”功能相关联的内部版本号比较。第一版是 1,当重大的增强添加到命令扩展中时,版本号将增加 1。当禁用命令扩展时,cmdextversion 条件不会为真。
defined variable
defined 条件的作用就象是 exist,但它使用环境变量名,并且如果环境变量已经定义它将返回真值。使用该条件添加三个变量:%errorlevel%,
%cmdcmdline% 和 %cmdextversion%。
%errorlevel% 扩展到 errorlevel 当前值的字符串表达式,如果没有名为 ERRORLEVEL 的环境变量,在这种情况下可取代它的值。程序运行后,下面的图解
errorlevel 使用:
goto answer%erorlevel% :answer0 echo Program had return code 0 :answer1 echo Program had return code 1
也可以在 compare-op 中使用上面列出的比较操作符:
if %errorlevel% LEQ 1 goto okay
%cmdcmdline% 在任何 Cmd.exe 处理之前扩展传递到 Cmd.exe 的源命令行,如果没有名为
cmdcmdline 的环境变量,在这种情况下可取代它的值。
%cmdextversion% 扩展到 cmdextversion 当前值的字符串表达式,如果没有名为 CMDEXTVERSION 的环境变量,在这种情况下可取代它的值。
expression
在 else 子句中,expression 由 Windows 命令和任何传递到命令的参数组成。
附加一个实例,都是转的……谢谢作者
1。判断目录或文件的存在,来从服务器同步文件到本地
如D:\pubclt 目录被客人删除。可以用这种办法解决(注:我的服务器为fyt200)
@echo off
if exist tmp.txt del /q tmp.txt
for /f %%i in ('dir /a /b D:\pubclt\pubwin.exe') do echo %%i>>tmp.txt
if exist tmp.txt (goto 11) else (goto 12)
if exist tmp.txt del /q tmp.txt
:11
@echo -----------------------------
@echo 客户端无需更新.
@echo -----------------------------
goto q
:12
xcopy \\fyt200\share\pubclt d:\pubclt\ /s /f /y /q &
\\fyt200\share\soft\control\pubwin.exe
d:\pubclt\pubwin.exe
@echo -----------------------------
@echo ....客户端更新完毕...........
@echo -----------------------------
:q
exit
这个批处理的意思是查找d盘中pubclt目录下的pubwin.exe文件,如果查找存在,则goto 11,如不存在则 goto12 其实这种办法可以用if exist 和if not exist命令实现,但是本人觉得这个会更好用一些。处理面也会广很多。
2。对比服务器的某个目录,删除多余的目录和文件。(注:我的服务器为fyt200)
@echo -----------------------------
@echo .同步更新磁盘D中所有和文件夹.
@echo -----------------------------
@echo .
cd /d d:
for /f "usebackq delims=" %%A in (`dir /a /b`) do (attrib "%%A" -r -h -s)
for /d %%A in ("d:\*") do if not exist "\\fyt200\share\%%~nA" rd /s /q "%%A"
for %%A in ("d:\*") do if not exist "\\fyt200\share\%%~nA" del /f /q "%%A"
这个大家一定要设置好来,比如你常用的d盘目录, netgame langame program files bak 下载区 等这些目录一定要在服务器上有,否则会无情的被删除。要是整个网吧都被删除了,呵呵不要怪我,dos下删除文件的速度是惊人的快的。。大家一定要先修改好自己的服务器路径。
3。隐藏d盘根目录中的所有文件和文件夹
cd /d d:
for /f "usebackq delims=" %%A in (`dir /a /b`) do (attrib "%%A" -r +h -s)
这个懂点批处理的人可能都懂,不多解释
4。在批处理中使用密码。当然只是简单的批处理,没有办法使用星号密码,技术还没有到那个地步。呵呵。。
@echo off
set num=0
:11
set /p pass=请输入密码:
if "%pass%"=="admin" goto next1
set /a num=%num% + 1
if %num%==3 goto no1
goto 11
:no1
%windir%\system32\rundll32.exe user32.dll,LockWorkStation
goto 11
:next1
pause
这个批处理的意思是:先设置num为0。密码为admin 输入正确,跳转到next1 ,若密码输入错误一次,则num加1,若3此输入密码错误则锁屏。。
另:批处理做好后,最好是使用QUICKbat等软件把文件属性改为幽灵文件。然后编译为EXE文件。或者用vbs文件后台执行,vbs这个网上都很流行。如:
DIM objShell
set objShell=wscript.createObject("wscript.shell")
iReturn=objShell.Run("cmd.exe /C\\192.168.0.200\share\soft\control\client.bat", 0, TRUE)
分享到:
相关推荐
批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是十分...
主要介绍了Windows批处理命令中IF的使用方法,推荐给大家,有需要的小伙伴可以参考下。
其 次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来 循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来...
用户可选择d m e ,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,...
其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是...
资源名称:批处理入门手册 chm 修正版内容简介: 一 .批处理常用 DOS 命令篇1. 1 echo rem cd dir 命令1. 2 attrib del copy xcopy1.... 1 if条件语句3. 2 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来...
bat编程_批处理 包含 echo for in loop end loop netsh ping tracert netstat natstat 等
//判断文件存在 @echo off if exist "d:\dd.txt" ( del "d:\dd.txt" echo 文件已被删除 )else ( echo 您要删除的文件不存在 ) pause
其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来是...
二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、时间延迟 十、模拟进度条 ...
第一章 批处理基础 第一节 常用批处理内部命令简介 ... 14、20080327修改了“if增强用法”中的defined语句说明 15、20080402增加变量嵌套与命令嵌套,重要技巧之一。 不断学习中,不断更新中。
DOS批处理高级教程精选合编.pdf 有详细的书签。for语句详解 if语句详解 set语句详解 变量拓展
只可以在批处理语句开头行之前加断点,不可以在批处理语句的续行加断点,不可以在空行、标签行和右括号)开头的行加断点,不可以在非批处理代码处【比如内嵌perl代码】加断点; 虽然程序做了初步的检查以防止你的疏忽...
其次,批处理文件是一种简单的程序,可以通过条件语句(if)和流程控制语句(goto)来控制命令运行的流程,在批处理中也可以使用循环语句(for)来循环执行一条命令。当然,批处理文件的编程能力与C语言等编程语句比起来...
可以编译一些小的批处理,因为是精简版,功能不是很多,用pascal编写,不可以使用if for set 语句,开头也不可以加@echo off等,而且在末尾要加上exit,但功能虽小,贵在精简,文件十分小,方便携带,使用后会在同一...
第一章 批处理基础 第一节 常用批处理内部命令简介 1、REM 和 :: ...14、20080327修改了“if增强用法”中的defined语句说明 15、20080402增加变量嵌套与命令嵌套,重要技巧之一。 不断学习中,不断更新中。
14、20080327 修改了“if 增强用法”中的defined 语句说明 15、20080402 增加变量嵌套与命令嵌套,重要技巧之一。 正文: 第一章批处理基础 第一节常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一...
二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、时间延迟 1、利用ping命令延时 2、利用...
二、if…else…条件语句 三、循环语句 四、子程序 五、用ftp命令实现自动下载 六、用7-ZIP实现命令行压缩和解压功能 七、调用VBScript程序 八、将批处理转化为可执行文件 九、时间延迟 1、利用ping命令延时...