我使用了这个脚本:
rem @echo off
SETLOCAL enableDelayedExpansion
Set crs=
REM Get the result from sl.txt
FIND "LISTENER_SCAN1" <sl.txt >sl_temp_01.txt
FIND "running" <sl_temp_01.txt >sl_final.txt
DEL sl_temp_01.txt
for /F "tokens=8 delims= " %%j in (sl_final.txt) do (
IF %%J EQU "40" (SET crs=crs1)
IF %%J EQU "41" (SET crs=crs2)
IF %%J EQU "42" (SET crs=crs3)
IF %%J EQU "43" (SET crs=crs4)
Echo %%j
Echo !crs!
Pause
)
这次,我可以将echo %% j设置为42,但是无法将变量crs设置为crs3。 能否请你帮忙? 谢谢,
答案 0 :(得分:2)
%%J
已包含双引号,则if
有效,如果不是这样,那就永远都不是。~
修饰符去除可能的双引号和
自行设置。IF "%%~J" EQU "40" (SET crs=crs1)
%%J
和%%j
也是不同的元变量-在您的批次中,
先用小写然后再用大写。(=
后面-不是空格。这将返回
然后echo is on/off
。for /f
:: Q:\Test\2018\06\27\SO_51067292.cmd
@echo off & SETLOCAL enableDelayedExpansion
Set "crs="
for /F "tokens=8 delims= " %%J in (
'FIND "LISTENER_SCAN1" ^<sl.txt ^| FIND "running"'
) do (
IF "%%~J" EQU "40" (SET crs=crs1)
IF "%%~J" EQU "41" (SET crs=crs2)
IF "%%~J" EQU "42" (SET crs=crs3)
IF "%%~J" EQU "43" (SET crs=crs4)
Echo=%%J
Echo=!crs!
Pause
)