找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26225|回复: 3

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

[复制链接]
发表于 2014-12-22 13:05:26 | 显示全部楼层 |阅读模式
本帖最后由 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!。”出现的原因?
发表于 2014-12-22 14:43:28 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str="bbs.bathome.net"
  4. if !str:~0^,1! == ^" (
  5.     echo yes
  6. ) else (
  7.     echo no
  8. )
  9. pause
复制代码
  1. @echo off
  2. set str="bbs.bathome.net"
  3. if ^%str:~0,1% == ^" (
  4.     echo yes
  5. ) else (
  6.     echo no
  7. )
复制代码

评分

参与人数 1技术 +1 收起 理由
Pchief + 1 很好,如果能说明下原因就更好了

查看全部评分

发表于 2014-12-23 07:41:58 | 显示全部楼层

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str="bbs.bathome.net"
  4. set a=^"
  5. if "!str:~0,1!" == "!a!" (
  6.     echo yes
  7. ) else (
  8.     echo no
  9. )
复制代码

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set str="bbs.bathome.net"
  4. if "!str:~0,1!" == "^"" (
  5.     echo yes
  6. ) else (
  7.     echo no
  8. )
复制代码
比较二者。
发表于 2014-12-23 09:39:10 | 显示全部楼层
回复 3# yiwuyun


第一段代码的第4行里面的 ^ 可以省略吧
第二段代码报错,语法不正确。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 01:19 , Processed in 0.011443 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表