标题: [文本处理] [已解决]批处理命令 if 后面跟子串运算符的问题 [打印本页]
作者: Pchief 时间: 2014-12-22 13:05 标题: [已解决]批处理命令 if 后面跟子串运算符的问题
本帖最后由 Pchief 于 2014-12-22 16:35 编辑
我的代码是这样:- if [%2] equ [] (
- echo no arg!
- goto endp
- )
-
- setlocal EnableDelayedExpansion
- set argline=%*
- set /a in_quote=0
-
- :loop1
- if !argline:~0,1! == ^" (
- set /a in_quote=1-!in_quote!
- goto strip1st
- )
- if !in_quote! equ 1 goto strip1st
- if !argline:~0,1! == ^ goto endp
-
- :strip1st
- set argline=!argline:~1!
- goto loop1
-
-
- :endp
- echo !argline!
- endlocal
- pause
复制代码
把这段代码存为文件 repl_np.bat,运行结果如下- >test
-
- >call "C:\Documents and Settings\User\桌面\batch_test\repl_np.bat" notepad C:
- \"Program Files"\sc1\sc1.exe
-
- >if [C:\"Program Files"\sc1\sc1.exe] EQU [] (
- echo no arg!
- goto endp
- )
-
- >setlocal EnableDelayedExpansion
-
- >set argline=notepad C:\"Program Files"\sc1\sc1.exe
-
- >set /a in_quote=0
- 此时不应有 1!。
- >if !argline:~0,1! == ^" (
- >
复制代码
其中 call 那一行是我运行的实际命令行,请教一下那个“此时不应有1!。”出现的原因?
作者: DAIC 时间: 2014-12-22 14:43
- @echo off
- setlocal enabledelayedexpansion
- set str="bbs.bathome.net"
- if !str:~0^,1! == ^" (
- echo yes
- ) else (
- echo no
- )
- pause
复制代码
- @echo off
- set str="bbs.bathome.net"
- if ^%str:~0,1% == ^" (
- echo yes
- ) else (
- echo no
- )
复制代码
作者: yiwuyun 时间: 2014-12-23 07:41
- @echo off
- setlocal enabledelayedexpansion
- set str="bbs.bathome.net"
- set a=^"
- if "!str:~0,1!" == "!a!" (
- echo yes
- ) else (
- echo no
- )
复制代码
- @echo off
- setlocal enabledelayedexpansion
- set str="bbs.bathome.net"
- if "!str:~0,1!" == "^"" (
- echo yes
- ) else (
- echo no
- )
复制代码
比较二者。
作者: DAIC 时间: 2014-12-23 09:39
回复 3# yiwuyun
第一段代码的第4行里面的 ^ 可以省略吧
第二段代码报错,语法不正确。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |