标题: [原创] [批处理命令一日一教学](4)条件判断:if [打印本页]
作者: namejm 时间: 2008-11-14 20:07 标题: [批处理命令一日一教学](4)条件判断:if
[一日一教学]批处理系列帖子索引 http://www.bathome.net/thread-2576-1-1.html
标题:一日一教学系列4_条件判断:if
首发地址:http://bbs.bathome.net/thread-2530-1-1.html
发表日期:2008.11.14
更新日期:无
上一篇:内容重定向:>和>> http://bbs.bathome.net/thread-2516-1-1.html
下一篇:流程跳转:goto http://bbs.bathome.net/thread-2574-1-1.html
if用于条件判断,适用于以下情形:
1、判断驱动器、文件或文件夹是否存在,用 if exist 语句;
2、判断某两个字符串是否相等,用 if "字符串1"=="字符串2" 语句;
3、判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
4、判断某个变量是否已经被赋值,用 if defined str 语句;
if语句的完整格式是这样的:if 条件表达式 (语句1) else (语句2),它的含义是:如果条件表达式成立,那么,就执行语句1,否则,将执行语句2。
对于以上四种情形,可以分别使用如下代码:
1、if exist d:\test.txt (echo D盘下有test.txt存在) else (echo D盘下不存在test.txt)
2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)
4、if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)
判断字符串是否相等的时候,if会区分大小写,比如,单纯的if语句会认为字符串abc和字符串Abc不相同,若不想区分大小写,则需要添加 /i 开关,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符号是连续的"=="而非单独的"="。
判断两个数值之间的大小关系,除了等于用equ之外,还有其他的关系符号,所有适用于if语句的关系符号见下表:
中文含义 | 关系符 | 英文解释 |
等于 | equ | equal |
大于 | gtr | greater than |
大于或等于 | geq | greater than or equal |
小于 | lss | less than |
小于或不等于 | leq | less than or equal |
不等于 | neq | no equal |
if语句还有一个精简格式:if 条件表达式 语句,它的含义是:如果条件表达式成立,将执行语句,否则,什么也不做。
多层 if 嵌套的语法举例:- if exist a.txt (
- if exist 1.txt (
- echo 存在 a.txt 和 1.txt
- ) else (
- echo 存在 a.txt 但是不存在 1.txt
- )
- ) else if exist b.txt (
- echo 不存在 a.txt 但是存在 b.txt
- ) else (
- echo 不存在 a.txt 和 b.txt
- )
复制代码
作者: qingfengzhixia 时间: 2008-11-14 20:59
建议楼主在文章的两头添加[code][/code]
作者: lixiaodaoaaa 时间: 2008-11-14 21:27 标题: 写个例子,便于大家理解
- @echo off
- @mode con cols=40 lines=17
- if exist c:\1.txt start cmd.exe&&echo 存在1.txt
- echo.&echo.&echo.&echo.
- pause
复制代码
作者: Batcher 时间: 2008-11-14 23:41 标题: 回复 2楼 的帖子
加上code以后,虽然便于大家复制,但是不利于排版。
作者: yslyxqysl 时间: 2008-11-15 11:04
判断某两个数值是否相等,用 if 数值1 equ 数值2 语句;
注意进制。- if 017 equ 15 echo YES
- if 0x34 equ 52 echo YES
- if 045 equ 0x25 echo YES
- pause>nul
复制代码
作者: kennybao 时间: 2008-11-15 12:36
1. else 好像必须和if写在同一行,不然报错,因为CMD把else当作一条命令了。
2. else 后面的代码和( )括号好像都得单独一行
不知道说得对不对。
作者: Batcher 时间: 2008-11-16 12:34 标题: 回复 6楼 的帖子
- @echo off
- if exist C:\Batcher.txt (
- echo 哈哈
- ) else (
- echo 嘿嘿
- )
- pause
复制代码
作者: nanyi 时间: 2008-12-22 12:31
那个leq的中文含义应该是“小于或等于”吧,LZ貌似写错了。
作者: zjw767676 时间: 2008-12-22 21:27
原帖由 nanyi 于 2008-12-22 12:31 发表
那个leq的中文含义应该是“小于或等于”吧,LZ貌似写错了。
确实是小于或等于
作者: xiong8707 时间: 2008-12-25 20:34 标题: 没看懂 能教一下吗?
比如 我需要判断输入0 1 2 等数值 来决定执行什么命令
那我该怎么写?
作者: xiong8707 时间: 2008-12-25 20:45 标题: 大家别见笑哈,帮我该一下使得此批处理能成功执行
- @echo off
- set /p s=请输入1 或 2
- echo %s%
- if "s"=="1" goto a
- if "s"=="2" goto b
- :a
- echo 你输入的是1
- pause
- exit
-
- :b
- echo 你输入的是2
- pause
- exit
复制代码
作者: zhaoyajin2000 时间: 2008-12-27 10:54
你的代码可以执行啊 ? 有什么问题吗?
作者: xujin1402008 时间: 2008-12-28 02:01
原帖由 xiong8707 于 2008-12-25 20:45 发表
@echo off
set /p s=请输入1 或 2
echo %s%
if "s"=="1" goto a
if "s"=="2" goto b
:a
echo 你输入的是1
pause
exit
:b
echo 你输入的是2
pause
exit
- @echo off
- set /p s=请输入1 或 2
- echo %s%
- if %s% equ 1 goto a
- if %s% equ 2 goto b
- :a
- echo 你输入的是1
- pause
- exit
-
- :b
- echo 你输入的是2
- pause
- exit
复制代码
作者: nanoking 时间: 2009-1-5 03:18
我也来一个,哈哈…………
- @echo off
- set mode con lines=30
- :0
- cls
- echo.#######################################
- echo.投票:
- echo. 1、楼主的贴子写得好;
- echo. 2、楼主的贴子写得一般般;
- echo. 3、楼主的贴子写得不啥的。
- echo.#######################################
- echo.
- set no=:
- set /p no= 请选择:
- set "no=%no:"=%"
- if "%no%"==":" goto 0
- if "%no%"=="1" goto 1
- if "%no%"=="2" goto 2
- if "%no%"=="3" goto 3
- if "%no%"=="0" goto 0
- goto 0
-
- :1
- cls
- echo.哈哈,你太英名了!!!
- pause>nul
- goto 0
-
- :2
- cls
- echo.哟,你太客气了!!!
- pause>nul
- goto 0
-
- :3
- cls
- echo.你眼神不好!!!要不你来写一个更好的!
- pause:nul
- goto exit
-
- :exit
- exit
复制代码
作者: whedu 时间: 2009-2-24 09:22
都是高手,看着挺费劲!
作者: fsh6666 时间: 2009-3-9 15:01
不错 分享了 谢谢了
作者: sabor 时间: 2009-3-9 16:19 标题: 顶一个~
支持...
我顶..
作者: 5810239q 时间: 2009-4-2 22:45
楼主的贴子写得好
作者: computerarts 时间: 2009-4-8 15:46
呵呵,有点晕。看来不能急进,要一点点学。
作者: 8582565 时间: 2009-4-9 14:08
@echo off
菜鸟,完全看不懂啊······
作者: xiaoxin 时间: 2009-4-11 16:13
在网上搜的资料不怎么好,今天看到楼主的教程 ,呵呵 一看就懂 ,对我们新手来说这样的教程是最好的。
作者: zouweiproe 时间: 2009-4-17 14:41
这一篇看不懂了,不知楼主有什么高招让我们这些菜鸟能消化这一课...
作者: zouweiproe 时间: 2009-4-17 14:48 标题: 回复 3楼 的帖子
不知这是什么意思了?一点都看不懂- @echo off
- @mode con cols=40 lines=17
- if exist c:\1.txt start cmd.exe&&echo 存在1.txt
- echo.&echo.&echo.&echo.
- pause
复制代码
似乎和前面学的两课挂不上钩,如果楼主能对每一项做一个详解就好了!先谢谢....
例如echo off是什么意思?
@mode con cols=40 lines=17 又是什么意思?
如果能用中文解释一下每一行的意思就好
作者: 250CC 时间: 2009-7-16 14:03
写得比较祥细
作者: zysheng110 时间: 2009-7-16 16:16 标题: 前面输入1和2应该加入简易判断!要不输入3就出错!(个人意见)
- @echo off
- :c
- set /p s=请输入1 或 2
- echo 你输入的为%s%
- if %s%==1 goto a
- if %s%==2 goto b
- echo 输入错误,请按要求输入!
- pause>nul
- cls
- goto c
- :a
- echo 你输入的是1 符合要求
- pause
- exit
- :b
- echo 你输入的是2 符合要求
- pause
- exit
复制代码
作者: benz1979 时间: 2009-7-22 13:53
向高手们学习!努力提高自己!
作者: wkdxz 时间: 2009-8-5 15:20
流程跳转:goto http://bbs.bathome.net/topicadmin.php?tid=2574
批处理之家 提示信息
对不起,您没有权限使用管理功能。
老大,处理下,看不到教程了。。
作者: fyb198351 时间: 2009-8-5 15:56
以前看的时候看不懂。。现在能看懂了
作者: wwenyunkui 时间: 2009-8-5 17:48
有些还是不怎么懂,慢慢学吧
作者: yettybetty 时间: 2009-9-23 10:34
楼主举2个实例啊 感觉这课没怎么懂
作者: zjdhk 时间: 2009-10-9 21:49 标题: 回复 11楼 的帖子
在标号:a之前加一句
echo 输入不正确
pause
exit
应该会比较好
作者: caimingbing 时间: 2010-1-10 11:51
真厉害!佩服中,继续学习中
作者: 咒夜坠 时间: 2010-4-27 10:38 标题: 回复23楼mode
回复23楼mode貌似是显示模式
可以在CMD下间入MODE/?获得帮助
作者: xyqylong 时间: 2010-10-5 23:27 标题: 回复 13楼 的帖子
echo %s%
能说一下这一句有什么实际意义吗?
好好像没什么用处
作者: xyqylong 时间: 2010-10-5 23:32 标题: 回复 7楼 的帖子
7楼的“()”怎么用的,看不太懂,好像不这样用也可以执行,是个人习惯吗,好像减少了代码的可读性
作者: Hello123World 时间: 2011-1-17 07:08 标题: 回复 38楼 的帖子
以前总是说偏移,理解起来有点迟缓,理解为截掉确实更便于运用。
作者: sdvdxl 时间: 2011-3-27 14:40
特殊符号要用^取消其作用,command语句里面包含了<>=等符号,搞了半天也不出,最后终于搞定
作者: xindi10631 时间: 2011-3-29 13:19
怎么没有linux专区呢?
作者: zyc_213 时间: 2011-5-10 15:39
看貼必回。學習中
作者: huomingpang 时间: 2011-5-21 10:03
恩,我是新手,我想知道十四楼的set "no=%no:"=%"
是什么意思,set 后面的是什么意思
作者: hiyaya1212 时间: 2011-5-26 15:52
感觉不是很详细,还是有些不懂呢,到时再来请教- -
作者: baowenjin18 时间: 2011-5-28 22:18
输入1 或 2 a
a
你输入的是1
输入1 或 2
a
你输入的是1
输入1 或 2
a
你输入的是1
输入1 或 2
a
你输入的是1
输入1 或 2 c
c
你输入的是1
输入1 或 2 ed'c
ed'c
你输入的是1
====================================
好吧,一个巨大的BUG
作者: common 时间: 2011-5-29 23:03
13# xujin1402008
请问朋友,为什么换成EQU执行就正确有,==输入2会执行不了呢
作者: 小黑熊 时间: 2011-5-31 09:55
14楼 真有创意 哈哈
作者: q381927439 时间: 2011-6-8 23:20
13# xujin1402008
set /p s
为什么要/P , /P做什么用的?
作者: welllib 时间: 2011-6-16 10:29
用set命令接收到的"输入数字"是什么类型的变量
作者: wpNature 时间: 2011-7-8 09:44
本帖最后由 wpNature 于 2011-7-8 09:46 编辑
The ELSE clause must occur on the same line as the command after the IF.
For example:
IF EXIST filename. (
del filename.
) ELSE (
echo filename. missing.
)
The below example would NOT work because the del command needs to be terminated by a newline:
IF EXIST filename. del filename. ELSE echo filename. missing
Nor would the below example work, since the ELSE command must be on the same line as the end of the IF command:
IF EXIST filename. del filename.
ELSE echo filename. missing
The below example would work if you want it all on one line:
IF EXIST filename. (del filename.) ELSE echo filename. missing
PS:SEE MORE INFORMATION ABOUT ABOVE :http://www.computerhope.com/if.htm
作者: 思念杨杨 时间: 2011-8-1 13:58
less than or equal
这个应该是小于或等于吧?
作者: 思念杨杨 时间: 2011-8-1 13:58
less than or equal
这个应该是小于或等于吧?
作者: zaixinxiangnian 时间: 2011-8-13 15:53
本帖最后由 zaixinxiangnian 于 2011-8-13 22:21 编辑
回复 "10"
初学者大家见笑了
code:
@echo off
set /p val=请输入值:>nul
if "%val%" equ "0" (echo 你输入了%val%&goto d) else goto abc
:abc
if "%val%" equ "1" (echo 你输入了%val%&goto d) else goto ab
:ab
if "%val%" equ "2" (echo 你输入了%val%&goto d) else goto g
:g
color 16
echo 你的输入错误
:d
pause
作者: wanxibing 时间: 2011-8-19 21:26
回复 11# xiong8707 - @echo off
- :bigen
- cls
- set /p s=请输入1 或 2
-
- if "%s%"=="1" goto a
- if "%s%"=="2" goto b
- goto err
-
- :err
- color 4f
- echo.
- echo 错误, 你输入的是"%s%"不是数字1或2 请重新输入
- pause>nul 2>nul
- goto bigen
- :a
- color 2f
- cls
- echo 正确!你输入的是%s%=1
- pause>nul 2>nul
- exit
-
- :b
- color 2f
- cls
- echo 你输入的是%s%=2
- pause>nul 2>nul
- exit
复制代码
作者: wanxibing 时间: 2011-8-19 21:28
你以前的代码,我要是不输入1或2呢,又是怎么结果
作者: cjiabing 时间: 2011-8-20 00:01
本帖最后由 cjiabing 于 2011-8-20 00:05 编辑
#46、48、49、51楼
语法是规定的东西,没有太多的why,记住就行。
以下是一个常见的if命令的使用方法,可以用来创建菜单,比较大小,判断条件等。
IF命令帮助信息中,比较运算符可以是:
EQU - 等于,同“==”
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
具体使用:
- @echo off
- :start
- echo;
- echo; 请分别输入字母 a 和 A
- echo; 请分别输入数字 3、10、16
- echo; 退出请输入 Q
- echo;
- set var=
- ::清空延迟的变量。
- set /p var= 请输入任意字符,比如“A”:
- ::“set /p 变量名=提示语”用来与用于交互,给用户输入内容。
- if "%var%"=="" goto start
- ::假如没有输入则返回重新输入。
- if /i %var% equ Q goto end
- ::使用goto命令可以跳到其他标签子项中。
- if %var% equ a echo 你输入了小写字母 a
- if %var% equ A echo 你输入了大写字母 A
- if /i %var% == a echo 你输入了字母 a (不分大小写)
- if %var% lss 10 echo 你输入的 %var% 小于 10.
- if %var% geq 10 echo 你输入的 %var% 大于等于 10.
- if %var% lss 20 if %var% gtr 10 echo 你输入的 %var% 介于 20 和 10 之间。
- ::可以多个if条件嵌套,用于复杂的判断。
- echo 输入结束。
- pause
- goto start
- :end
- echo;
- echo 你选择了退出。
- pause
复制代码
作者: aber02zzl 时间: 2011-9-21 10:26
本帖最后由 aber02zzl 于 2011-9-21 10:32 编辑
这是我自己学习后的一个例子,搞了好久,还有很多不完善的地方,大家勉强看看吧- @echo off
- :0
- cls
- echo #################
- echo how are you
- echo 1.how are you
- echo 2.nice to see you
- echo 3.bye
- echo #################
- echo.
- set /p s=choose:
- if %s% equ 1 goto a
- if %s% equ 2 goto b
- if %s% equ 3 goto end
- if %s% neq 1 goto 4
- if %s% neq 2 goto 4
- if %s% neq 3 goto 4
- :a
- echo how are you
- pause >null
- goto 0
- :b
- echo nice to see you
- pause>null
- goto 0
- :4
- echo error
- pause>null
- goto 0
- :end
复制代码
发完仔细检查发现这里面有个错误,欢迎大家指正!
作者: aber02zzl 时间: 2011-9-21 10:35
这是我改正后的,应该没有逻辑错误了- @echo off
- :0
- cls
- echo #################
- echo how are you
- echo 1.how are you
- echo 2.nice to see you
- echo 3.bye
- echo #################
- echo.
- set /p s=choose:
- if %s% equ 1 goto a
- if %s% equ 2 goto b
- if %s% equ 3 goto end
- echo error! input again!
- pause>null
- cls
- goto 0
- :a
- echo how are you
- pause >null
- goto 0
- :b
- echo nice to see you
- pause>null
- goto 0
- :end
复制代码
作者: QIAOXINGXING 时间: 2011-9-30 23:05
学习了。。。。。。。。。。。。
作者: Fantasys 时间: 2011-10-12 17:51
if语句如果有用到括号来括住条件符合时要执行的语句时,它的执行语句前的括号“(”必须与if语句在同一行,而后面的括号")"必须与else在同一行。而且else的执行语句前的括号也要与else在同一行。如:
if a=b (
echo a
) else (
echo b
)
或是:
if a=b (echo a) else (echo b)
作者: lazdkiy 时间: 2011-11-7 16:45
if exist 1.txt (echo exsited>1.txt) else (cd.>1.txt)执行两遍,运行结果不一样
作者: xso300 时间: 2011-12-7 00:27
if exist 1.txt (echo exsited>1.txt) else (cd.>1.txt)执行两遍,运行结果不一样
lazdkiy 发表于 2011-11-7 16:45
楼上误人啊,exsited这个东西我搞了十来分钟,原来就是把这个字符重定向到1.txt文本里面啊!!建议不要用让生手模拟两可的东西啊,这里的exsited让我误解成命令了!!
顺便请教下回答发这个贴子时论坛给出的验证问题是:set /a a=55^<^<5
运行后得到了1760这个结果,还望知道这个结果怎么来的人帮忙解释下,THS!
作者: ghostwar 时间: 2011-12-9 18:30
- @echo off
- echo.&echo.
- set /p str = 请输入密码:
- if "str"=="qwer" (echo 密码正确!)else(echo 密码错误!)
- pause
复制代码
执行不了,求指教
作者: Null? 时间: 2012-3-22 22:41
回复 63# ghostwar - @echo off
- echo.&echo.
- set /p str=请输入密码:
- if /i "%str%"=="qwer" (echo 密码正确!) else (echo 密码错误!
- )
- pause>nul
复制代码
作者: Null? 时间: 2012-3-22 22:46
另有一行代码求教,- echo off
- for %%i in (79) do echo.
- pause
- :start
- if %%i lss 100 (echo pretty good!&pause>nul) else (echo Ah..!&pause>nul)
- if %%i lss 0 (echo Pretty good!&pause>nul) else (echo SHIT!&pause>nul)
- goto start
复制代码
输出结果都是Pretty good,怎么回事?
作者: xiaopo 时间: 2012-4-25 22:32
回复 66# Null?
我感觉应该是for形式变量不能在for语句外引用造成的,你可以在for语句之后echo %%i看看
改成下面的代码就可以了- echo off
- for %%i in (79) do (
- echo.
- set /a num=%%i
- )&pause
- :start
- if %num% lss 100 (echo pretty good!&pause>nul) else (echo Ah..!&pause>nul)
- if %num% lss 0 (echo Pretty good!&pause>nul) else (echo SHIT!&pause>nul)
复制代码
作者: baizhongaa 时间: 2012-5-21 17:07
真是好帖。。太喜欢这个每日一学了。。
作者: xingjinda 时间: 2012-5-22 14:57
@echo off
set /p s=请输入1或2:
if /i "%s%"=="2" goto a
if /i "%s%"=="1" goto b
:a
echo 你输入的是2
pause
exit
:b
echo 你输入的是1
pause
exit
作者: wfengye 时间: 2012-5-25 23:57
看不懂哇哇哇哇我
作者: jackmux 时间: 2012-5-28 08:21
慢慢积累,学了就多了 感觉这里人挺互相照顾的
作者: forfiles 时间: 2012-6-28 17:21
回复 72# 奕博
删除变量内容里面的双引号
作者: zzpsongs 时间: 2012-7-15 20:29
楼上误人啊,exsited这个东西我搞了十来分钟,原来就是把这个字符重定向到1.txt文本里面啊!!建 ...
xso300 发表于 2011-12-7 00:27
复制代码
等价于复制代码
就是将十进制数55的二进制形式110111左移5位(相当于乘以2的5次方)
结果是二进制数11011100000,转化成十进制就是1760了
作者: cjiabing 时间: 2012-7-19 14:40
回复 62# xso300
if exist 1.txt (echo 存在文本 1.txt——此时,如果你想重写1.txt,或把这句话写入该文本就在后面加 >1.txt) else echo 如果不存在就创建该文本 >1.txt
不管是否存在1.txt文件都创建时直接用 cd.>1.txt
如果想存在该文本文件时只是想往里写东西,则使用 if exist 判断好点。
-
- if exist 1.txt (echo 存在文本) else echo 文本不存在&cd.>1.txt
- ::执行结果就是,一定存在1.txt。
复制代码
作者: linzhichu11 时间: 2012-11-7 08:13
回复 14# nanoking
set "no=%no:"=%" 请教一下这个是什么意思?谢谢了!
作者: BAT-VBS 时间: 2012-11-7 08:32
回复 76# linzhichu11
删掉双引号
作者: linzhichu11 时间: 2012-11-7 12:37
回复 77# BAT-VBS
谢啦!
作者: ladesiji 时间: 2012-11-15 09:12
回复 5# yslyxqysl
关于进制的,还是不理解,我自己观察了你的示例,按照数量关系来说:第一组 第一个数字是8进制,后面是10进制。第二组第一个是16进制,后面是10进制。第三组第一个数字为8进制,后面的为16进制。
是不是想告诉我们:16进制数 必须是0X00格式 8进制 开头必须有 0 而10进制数没有别的限制可以直接表示?
作者: victoriacc 时间: 2013-2-18 11:36
学习了,很好。。。
作者: xuliang331221 时间: 2013-3-6 15:38
- @echo off
- set /p s=请输入1 或 2
- echo %s%
- if "s"=="1" goto a
- if "s"=="2" goto b
- :a
- echo 你输入的是1
- pause
- exit
-
- :b
- echo 你输入的是2
- pause
- exit
复制代码
作者: 岁寒叁友 时间: 2013-5-9 09:19
- echo off
- :q
- echo 请输入1或2或3
- set /p s=
- @echo %s%
- if %s% lss 1 (
- echo 你输入有误
- goto q
- )
- if %s% gtr 3 (
- echo 你输入有误
- goto q
- )
- if %s% equ 1 (
- echo 你输入的是1
- pause
- exit
- )
- if %s% equ 2 (
- echo 你输入的是2
- pause
- exit
- )
- if %s% equ 3 (
- echo 你输入的是3
- pause
- exit
- )
复制代码
作者: 岁寒叁友 时间: 2013-5-9 09:42
- @echo off
- :q
- echo 请输入1或 2或 3
- set /p s=
- echo %s%
- if %s% lss 1 goto a
- if %s% gtr 3 goto a
- if %s% equ 1 goto b
- if %s% equ 2 goto c
- if %s% equ 3 goto d
- :a
- echo 你输入有误 请重新输入
- pause
- goto q
- :b
- echo 你输入的是一
- pause
- exit
- :c
- echo 你输入的是二
- pause
- exit
- :d
- echo 你输入的是三
- pause
- exit
复制代码
作者: an410398183 时间: 2013-5-9 13:55
楼主贴子很不错.
作者: system_fans 时间: 2013-7-26 16:10
这个帖子写的真不错,哈哈
作者: changedirectory 时间: 2013-9-8 16:52
回复 14# nanoking
能解释下,有点看不懂!
作者: changedirectory 时间: 2013-9-8 17:57
新手写一个。- @echo off
- if exist bat rd /s /q bat
- pause
复制代码
作者: chuyizhou 时间: 2014-1-9 13:46
正好学习batch的第二天。非常非常有用。非常感谢搂住的一日一教程!
作者: 740511 时间: 2014-4-14 15:29
太复杂了,看着实在费劲
作者: zh_1452 时间: 2014-4-26 02:11
echo off
start dir c:\windows\system32\*.ini
if exist c:\windows\system32\*.ini看看系统下面有没有后名为ini的文件
if "win"=="sys" win字符串等于不sys字符串
if 27 equ 39显示27等于39 还是27等于39
就这三个变量不会
作者: cjiabing 时间: 2014-4-26 08:00
回复 90# zh_1452
哥,学点基础知识啊!~
start dir c:\windows\system32\*.ini——start dir这是什么意思呢?
if exist c:\windows\system32\*.ini——if exist 不能使用通配符
……
作者: zhangwen716053 时间: 2014-5-18 20:46
回复 1# namejm
1、判断驱动器、文件、文件夹是否存在。 if exist i: (echo i盘存在) else (echo i盘不存在)
2、判断字符串是否相等。是否区分大小写,参数/i 例: if /i "Abc"=="abc" (echo "Abc"="abc",不区分大小写) else (echo dfasasdfasfd)
3、判断数值是否相等。
作者: zhangwen716053 时间: 2014-5-18 20:50
回复 1# namejm
1、判断驱动器、文件、文件夹是否存在。 if exist i: (echo i盘存在) else (echo i盘不存在)
2、判断字符串是否相等。是否区分大小写,参数/i 例: if /i "Abc"=="abc" (echo "Abc"="abc",不区分大小写) else (echo dfasasdfasfd)
3、判断数值是否相等。 例: if 1 equ 2 (echo 1dengyu 2) else (echo wohaogangxing)
不等于
作者: zhangwen716053 时间: 2014-5-18 20:53
回复 1# namejm
1、判断驱动器、文件、文件夹是否存在。 if exist i: (echo i盘存在) else (echo i盘不存在)
2、判断字符串是否相等。是否区分大小写,参数/i 例: if /i "Abc"=="abc" (echo "Abc"="abc",不区分大小写) else (echo dfasasdfasfd)
3、判断数值是否相等。 例: if 1 equ 2 (echo 1dengyu 2) else (echo wohaogangxing)
不等于 neq 大于
作者: daxin2014 时间: 2014-7-10 10:45
字符相等用== 不想等呢,是用!=吗?我试了下,貌似不行
作者: Batcher 时间: 2014-7-10 12:48
回复 95# daxin2014
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
作者: zh_1452 时间: 2014-7-10 19:18
本帖最后由 zh_1452 于 2014-7-10 20:07 编辑
回复 91# cjiabing - @echo off
- if exist e:\test.txt (echo e盘下有test.txt存在) else (type nul>e:\test.txt)
- if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (find "abc" "e:\test.txt")
- if 37 equ 63 (echo 37等于63) else (echo 37等于37)
- set str=37
- if defined str (echo 变量str已经被赋值,其值为%str%) else (echo 变量str的值为空)
- pause
复制代码
[attach]7433[/attach]- @echo off
- echo 一直在学习呀,就没停过,偶尔休息一下,也是因为夏天的缘故......
- pause
复制代码
作者: zh_1452 时间: 2014-7-27 09:57
本帖最后由 zh_1452 于 2014-7-27 10:09 编辑
- @echo off
- :: 批处理安装snagitv10.0
- if exist E:\SnagIt 7\Snagit\快速安装.exe (echo E:\SnagIt 7\Snagit快速安装.exe存在) else (
- (
- start /wait "" "E:\SnagIt 7\Snagit\快速安装.exe" /verysilent sp-
- )
- )
- echo.
- pause
复制代码
- @echo off
- ::批处理安装dev-c++ 4.9.9.2
- if exist C:\Documents and Settings\Administrator\桌面\devc_13036\devcpp.exe (echo C:\Documents and Settings\Administrator\桌面\devc_13036\devcpp.exe) else (
- (
- start /wait "" "C:\Documents and Settings\Administrator\桌面\devc_13036\devcpp.exe" /verysilent sp-
- )
- )
- echo.
-
- pause
复制代码
作者: zh_1452 时间: 2014-8-14 00:30
- @echo off
- echo ==============================
- echo.批处理安装三国志9单机版
- echo ==============================
- if exist e:\三国志9繁体中文硬盘版 (attrib e:\三国志9繁体中文硬盘版) else (
- (
- start /wait "" "e:\三国志9繁体中文硬盘版.exe" /verysilent sp-
- )
- )
- echo ==============================
- echo.安装成功请退出!
- echo ==============================
- pause
复制代码
作者: 缓慢的死亡 时间: 2014-9-4 18:25
学习了,感谢楼主~
作者: Nemo_zg 时间: 2014-10-17 15:39
回复 43# huomingpang
把变量no中的"去掉。
作者: 慕夜蓝化 时间: 2014-12-2 17:08
回复 7# Batcher
说实话,不明白你们为什么要这样写批处理,在我看来,批处理的命令多是由行来构成的,理解起来也比较方便。然而许多人这样子一条命令分成多行来写,看上去像是在做什么了不起的事情一样,写出来的命令一大串,许多时候让人一头雾水。。。然后在一点一点的理解,组合,真是的!
作者: Batcher 时间: 2014-12-2 17:20
回复 102# 慕夜蓝化
从语法上来说,不是必须写成那个样子。
微软是推荐写成那个样子的。
在程序员这个圈子里面,大多数人是倾向于写成那个样子的。
作为代码,第一重要的是正确性,能实现功能就好。人生苦短,自己怎么高兴就怎么写,不一定非要按照别人推荐的格式写代码。
作者: hero1997 时间: 2014-12-23 10:59
分开学感觉还好,难度在于以后的综合使用。
作者: cjiabing 时间: 2014-12-23 21:35
回复 102# 慕夜蓝化
格式这东西,不同的人写出来有不同的结果:
一本正经、规规矩矩的写,人家可能会说这家伙呆头呆脑的,罗里吧嗦,也可能会说这人学养深厚,大师风范。
不按常规、眼花缭乱的写,人家可能会说这家伙神嗨戚戚的,乱七八糟,也可能会说这人鬼斧神工,高手一绝。
看你怎么追求了
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |