Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops Can';findstr中的变量是否不使用?_Loops_Batch File_For Loop_Findstr - Fatal编程技术网

Loops Can';findstr中的变量是否不使用?

Loops Can';findstr中的变量是否不使用?,loops,batch-file,for-loop,findstr,Loops,Batch File,For Loop,Findstr,我有一个for循环,使用findstring搜索日志中的某个字符串,但它不能正常工作。它在errorlevel 0中执行所有操作,即使日志中没有这样的跟踪 @Echo on for /L %%x in (1, 1, 1000) do ( findstr /N /I /C:"MapException: Key '%%x'" "C:\Program Files (x86)\Steam\SteamApps\common\Starbound\starbound_server.log" if %erro

我有一个for循环,使用findstring搜索日志中的某个字符串,但它不能正常工作。它在errorlevel 0中执行所有操作,即使日志中没有这样的跟踪

@Echo on

for /L %%x in (1, 1, 1000) do (
findstr /N /I /C:"MapException: Key '%%x'" "C:\Program Files (x86)\Steam\SteamApps\common\Starbound\starbound_server.log"
if %errorlevel%==0 (
    Echo Memory Error at MapException: Key '%%x'!
)
)
pause
我想知道这是怎么回事

@Echo on
for /L %%x in (1, 1, 1000) do (
    findstr /N /I /C:"MapException: Key '%%x'" "C:\Program Files (x86)\Steam\SteamApps\common\Starbound\starbound_server.log"
    if not errorlevel 1 (
        Echo Memory Error at MapException: Key '%%x'!
    )
)
pause
为什么??好吧,试试这两行

(( echo hi | find "k" ) & echo %errorlevel% )
(( echo hi | find "k" ) & if errorlevel 1 echo not found )
“问题”是块内变量的扩展(括号内的行)。当执行到达块时,块开始执行之前,块内的所有变量读取都将替换为变量的值。当块执行时,变量可以更改其值,但在块内部看不到这些更改,因为它们已被其值替换

如何解决

启用延迟扩展并使用sintax
!错误等级。因此,在块解析时,变量读取不会被变量值替换。块内变量的更改在块内可见


或者,在这种情况下,由于涉及的变量是
errorlevel
,请使用经典的
if
形式检查其值。

我不知道!非常感谢你的帮助。