Board logo

标题: [其他] 批处理if命令使用咨询 [打印本页]

作者: start    时间: 2008-8-20 16:37     标题: 批处理if命令使用咨询

set /p v=请输入您的生肖:
怎么用if命令来判断输入的字中是否含有12生肖中的一种呢?请把代码写给我`谢谢了

[ 本帖最后由 start 于 2008-8-21 10:17 编辑 ]
作者: 523066680    时间: 2008-8-20 17:00

@echo off
set n=1
set /p v=请输入您的生肖:
for %%a in (鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡 狗 猪) do (if "%v%"=="%%a" (set n=0))
if %n% equ 1 (echo 不存在这一生肖) else (echo,存在这一生肖)
pause
作者: start    时间: 2008-8-20 17:09

能行,谢谢哦。。。可以不可以在给我解释一下那个set v=1  和 (set n=0)这2个代码呀``

[ 本帖最后由 start 于 2008-8-20 17:12 编辑 ]
作者: oowgsoo    时间: 2008-8-20 18:09     标题: 或许改一下命名方式你就看懂了

@echo off
set find=0
set /p v=请输入您的生肖:
for %%a in (鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡 狗 猪) do (if "%v%"=="%%a" (set find=1))
if %find% == 0 (echo 不存在这一生肖) else (echo,存在这一生肖)
pause

这里的for循环不管找没找到都要执行12次,如果循环体太复杂,或许就要用goto了:)
作者: itrui    时间: 2008-8-20 18:11

就是满足条件的话改变一下N的值,最后根据N是否变化了来判断输入是否正确。

这样也可以:

  1. @echo off
  2. set/p v=输入生肖:
  3. echo 鼠牛虎兔龙蛇马羊猴鸡狗猪|FIND "%v: =%">nul 2>nul&&echo OK||echo 貌似没有属[%v: =%]的哦 ^^o^^
  4. pause>nul
复制代码

[ 本帖最后由 itrui 于 2008-8-20 18:18 编辑 ]
作者: start    时间: 2008-8-20 19:12

嗯,你们一说明白了。
在问问大虾们,
if语句能不一次判断多次``
就好比刚才你们给我写的
@echo off
set n=1
set /p v=请输入您的生肖:
for %%a in (鼠 牛 虎 兔 龙 蛇 马 羊 猴 鸡 狗 猪) do (if "%v%"=="%%a" (set n=0))
if %n% equ 1 (echo 不存在这一生肖) else (echo,存在这一生肖)
pause

if %n% equ 1(echo 不存在这一生肖) else (
if %n% =="鼠" (goto 到谋一处) else (
if %n% =="虎" (goto 到谋一处)else(
.......一直到12生肖全部判断完。
我试了一下,不行,不知道是我写错了还是if语句不能这么用,要是不能这么用,能人我个方法吗?
itrui的那段代码前面懂,可是FIND "%v: =%">nul 2>nul这一句不太明白.

[ 本帖最后由 start 于 2008-8-20 19:24 编辑 ]
作者: mkl    时间: 2008-8-20 19:50

以“if %n% =="鼠" (goto 到谋一处) else ( ”为例将 "鼠" 旁边的 " " 去掉另外 鼠 与 == 之间应有空格else 与 (  间也有空格
作者: mkl    时间: 2008-8-20 19:53

建议这样写
  1. if %n% equ 1(echo 不存在这一生肖) else goto %n%
  2. :鼠
  3. ...
  4. :牛
  5. ...
  6. ......
复制代码

作者: start    时间: 2008-8-20 20:10     标题: 回复 8楼 的帖子

可以用了``谢谢大家的帮助了哦。。mkl你那样写可以,条条大路通罗马嘛``呵呵。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2