我写了一个批处理文件 strchr.bat 查找字符串当中某字符的位置,文件内容如下:
- :l_strchr
- @setlocal enabledelayedexpansion
- @set _a1=%~1
- @set _a2=%~2
- @set _rt=-1
-
- @if "%_a1%" equ "" @goto :l_fail
- @if "%_a2%" equ "" @goto :l_fail
-
- :l_loop
- @if "%_a1%" neq "" (
- @set /a _rt+=1
- @if "!_a1:~0,1!" equ "%_a2%" (
- @goto :l_found
- )
- @set _a1=%_a1:~1%
- @goto :l_loop
- )
- @set result=-1
- @goto :l_exit
-
- :l_found
- set result=%_rt%
- @goto :l_exit
-
- :l_exit
- @endlocal
- @goto :eof
复制代码
我写了一个测试文件 test.bat
- @call strchr "abc" "a"
- @echo %result%
- @pause
复制代码
输出当中看到是执行了 set result=0 这一句的:
但是 echo %result% 这一行却把%result%识别为空,输出为"ECHO 处于打开状态",就好像识别不到%result%一样。
奇怪了,明明 set result=0 了,为什么 echo %result%却显示不出来呢?
请问大家知道这是怎么回事吗? |