Board logo

标题: [系统相关] 请问我的 if 语句 错在那里的? [打印本页]

作者: siwmm    时间: 2009-6-16 12:00     标题: 请问我的 if 语句 错在那里的?

下面有两个代码:不同的只有if  的else最后 那里
为什么运行结果不同的?
  1. @echo off
  2. if "%n%"==1"" (set k1=%a:~6%&&goto eof) else (set b=%k% /s)
  3. set /p k1=b:
  4. if "%k1%"=="e" (goto eof) else (echo hasn't error)
  5. pause
复制代码
  1. @echo off
  2. if "%n%"==1"" (set k1=%a:~6%&&goto eof) else (set "b=%k% /s")
  3. set /p k1=b:
  4. if "%k1%"=="e" (goto eof) else (echo hasn't error)
  5. 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://www.bathome.net/) Powered by Discuz! 7.2