[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理命令 if 后面跟子串运算符的问题

本帖最后由 Pchief 于 2014-12-22 16:35 编辑

我的代码是这样:
  1. if [%2] equ [] (
  2. echo no arg!
  3. goto endp
  4. )
  5. setlocal EnableDelayedExpansion
  6. set argline=%*
  7. set /a in_quote=0
  8. :loop1
  9. if !argline:~0,1! == ^" (
  10. set /a in_quote=1-!in_quote!
  11. goto strip1st
  12. )
  13. if !in_quote! equ 1 goto strip1st
  14. if !argline:~0,1! == ^  goto endp
  15. :strip1st
  16. set argline=!argline:~1!
  17. goto loop1
  18. :endp
  19. echo !argline!
  20. endlocal
  21. pause
复制代码
把这段代码存为文件 repl_np.bat,运行结果如下
  1. >test
  2. >call "C:\Documents and Settings\User\桌面\batch_test\repl_np.bat"   notepad  C:
  3. \"Program Files"\sc1\sc1.exe
  4. >if [C:\"Program Files"\sc1\sc1.exe] EQU [] (
  5. echo no arg!
  6. goto endp
  7. )
  8. >setlocal EnableDelayedExpansion
  9. >set argline=notepad  C:\"Program Files"\sc1\sc1.exe
  10. >set /a in_quote=0
  11. 此时不应有 1!。
  12. >if !argline:~0,1! == ^" (
  13. >
复制代码
其中 call 那一行是我运行的实际命令行,请教一下那个“此时不应有1!。”出现的原因?

返回列表