Board logo

标题: [其他] [已解决]关于if的,遇到一件怪事,求解 [打印本页]

作者: Tamce    时间: 2014-8-29 22:54     标题: [已解决]关于if的,遇到一件怪事,求解

本帖最后由 Tamce 于 2014-8-30 22:07 编辑
  1. if "%2" == "0" (
  2. echo Normal menu:
  3. echo.
  4. ::Normal Menu
  5. ::%1:@=Name,icon=icon,%1^\command:@=command
  6. for /f "tokens=3" %%i in ('reg query %1 /ve 2^>nul') do (echo Name:%%i)
  7. for /f "tokens=3" %%i in ('reg query %1 /v icon 2^>nul') do (echo Icon:%%i)
  8. for /f "tokens=3" %%i in ('reg query %1\command /ve 2^>nul') do (echo Command:%%i)
  9. )
复制代码
这段代码总是会莫名其妙的输出:找不到指定驱动器
而且输出的位置实在近似注释那个位置,然后将代码改成一下则不会有这种情况:
  1. ::if "%2" == "0" (
  2. echo Normal menu:
  3. echo.
  4. ::Normal Menu
  5. ::%1:@=Name,icon=icon,%1^\command:@=command
  6. pause
  7. for /f "tokens=3" %%i in ('reg query %1 /ve 2^>nul') do (echo Name:%%i)
  8. for /f "tokens=3" %%i in ('reg query %1 /v icon 2^>nul') do (echo Icon:%%i)
  9. for /f "tokens=3" %%i in ('reg query %1\command /ve 2^>nul') do (echo Command:%%i)
  10. ::)
复制代码
这是怎么回事?我也不能把if注释掉啊,这里的判断是必须的阿!!

大神求解答。
问题发生的原因和解决方案
作者: CrLf    时间: 2014-8-29 23:04

本帖最后由 CrLf 于 2014-8-29 23:07 编辑

代码块内避免用 :: 做注释,改用 rem 吧
实际上 rem 才是正儿八经的 batch 注释命令
:: 其实只是无效标签,在 () 对中很容易出问题
作者: Tamce    时间: 2014-8-29 23:44

回复 2# CrLf

居然真的是那个注释的问题....
我一开始还想,既然是注释,那问题不应该在那里....

谢谢了!




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