Batch file 如何在windows批处理文件中设置变量?
我使用了以下脚本:Batch file 如何在windows批处理文件中设置变量?,batch-file,Batch File,我使用了以下脚本: 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 i
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
)
rem@echo关闭
SETLOCAL enableDelayedExpansion
设置crs=
REM从sl.txt获取结果
查找“LISTENER_SCAN1”sl_temp_01.txt
查找“running”sl_final.txt
DEL sl_temp_01.txt
对于/F“tokens=8 delims=“%%j in(sl_final.txt)do(
如果%%J等于“40”(设置crs=crs1)
如果%%J等于“41”(设置crs=crs2)
如果%%J等于“42”(设置crs=crs3)
如果%%J等于“43”(设置crs=crs4)
回声%%j
回声!crs!
暂停
)
这次我可以将echo%%j设置为42,但无法将变量crs设置为crs3。
你能帮忙吗?
谢谢,- 如果
已包含双引号,则您的If可能是 有效,如果不是,这永远不会是真的%%J
- 请务必使用
修饰符删除可能的双引号和 你自己定~
- 另外,
和%%J
是不同的元变量-在批处理中 先用小写字母,然后用大写字母%%J
- 如果变量可能为空,请使用不同的命令分隔符
例如,在echo
后面-不是空格。这将返回(=
然后echo打开/关闭
- 不需要中间文件,堆栈两个find命令和
使用
for/f
::Q:\Test\2018\06\27\SO\u 51067292.cmd
@echo off&设置本地启用延迟扩展
设置“crs=”
对于/F“tokens=8 delims=“%%J in(
'查找“侦听器\u SCAN1”^
- 如果
%%J
已包含双引号,则您的If可能是
有效,如果不是,这永远不会是真的
- 请务必使用
~
修饰符删除可能的双引号和
你自己定
- 另外,
%%J
和%%J
是不同的元变量-在批处理中
先用小写字母,然后用大写字母
- 如果变量可能为空,请使用不同的命令分隔符
例如,在echo
(=
后面-不是空格。这将返回
echo打开/关闭
然后
- 不需要中间文件,堆栈两个find命令和
使用
for/f
::Q:\Test\2018\06\27\SO\u 51067292.cmd
@echo off&设置本地启用延迟扩展
设置“crs=”
对于/F“tokens=8 delims=“%%J in(
'查找“侦听器\u扫描1”^
IF "%%~J" EQU "40" (SET crs=crs1)
:: 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
)