标题: [系统相关] 请问我的 if 语句 错在那里的? [打印本页]
作者: siwmm 时间: 2009-6-16 12:00 标题: 请问我的 if 语句 错在那里的?
下面有两个代码:不同的只有if 的else最后 那里
为什么运行结果不同的?
- @echo off
- if "%n%"==1"" (set k1=%a:~6%&&goto eof) else (set b=%k% /s)
- set /p k1=b:
- if "%k1%"=="e" (goto eof) else (echo hasn't error)
- pause
复制代码
- @echo off
- if "%n%"==1"" (set k1=%a:~6%&&goto eof) else (set "b=%k% /s")
- set /p k1=b:
- if "%k1%"=="e" (goto eof) else (echo hasn't error)
- pause
复制代码
作者: siwmm 时间: 2009-6-16 13:39
我想知道
两个运行结果为什么不同的?
作者: Batcher 时间: 2009-6-16 21:11 标题: 回复 3楼 的帖子
你把1放到双引号外面是为了达到什么效果?
作者: siwmm 时间: 2009-6-18 12:41
因为我觉得 P处理 没有定死了的的输入方式,如 fi "str1"=="str2" 中的""不一定要输入“”~
有简化就容易误会:道理如:“下雨天留客天天留我不留”有N种读法:
下雨,天留客,天天留,我不留(天天下雨,我已经不想留)
下雨天,留客天,天留我?不留!(下雨与天留人无关)
下雨天,留客天,天留,我不留!(主人不让留)
……
那if 判断机制会不会出错呢?~~
这几天刚了解P处时~ 没有找到系统的教材。就决定自己找IF的判断机制是怎样的~
所以发现 if "%n%"==1"" 的输入方法“好象”很有问题。
写出来的P处理真的“好象”有几种判断
如后面的 1"" 所以想测试"%n%" 是判断为带"的"%n%",还是只有%n%
set n=1
发现 "%n%"==1"" 等号两边有时会成立似的 即 if "%n%"==1"" 变为 if %n%"==1""
有时侯又报错~
还发现if 有时候 会在CMD 把 if "%n%"==1"" 变为 if "%n%"==""
还……
不知道是怎么搞的~~
刚学! 看 /? 头好晕
只是看过 /?
有时间再看看大家的文章~
请大家指点指点
尤其第二段代码 , 怎么 什么都不显示就结束了呢?
[ 本帖最后由 siwmm 于 2009-6-18 12:48 编辑 ]
作者: Batcher 时间: 2009-6-18 12:49 标题: 回复 5楼 的帖子
双引号不是随便加的,更不是为了好玩,它是为了防止变量或字符串里面含有特殊字符时可能带来的错误。
作者: siwmm 时间: 2009-6-18 12:56
原帖由 Batcher 于 2009-6-18 12:49 发表
……更不是为了好玩,……
请原谅“为了好玩”的我
“”加成这样子 P处理 是怎样判断的?
尤其那代码2 怎么在echo on 的情况下命令语句不显示就结束了?
作者: Batcher 时间: 2009-6-18 19:47 标题: 回复 7楼 的帖子
那你接着玩吧,有兴趣可以试试这种玩法:
不要双击运行
把代码保存为C:\test.bat
把@echo off删除
开始
运行
cmd
C:\test.bat
看看执行过程再好好想想
作者: inittab 时间: 2009-6-18 20:08
呵呵,楼主这牛角钻的。
我很想知道n=?时能让
"%n%"==1""
成立
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |