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。 你能帮忙吗? 谢谢,

  • 如果
    %%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 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
)