在 CMD 文件中使用 findstr 命令并期望设置 ERRORLEVEL。但事实并非如此

问题描述 投票:0回答:1

这条线有效:

findstr /I /C:"Archiving file" "..\LogFiles\%NewLogFileName%"

将以下内容输出到屏幕:

2023-08-21 13:25:11.9024|Info|Archiving file

我在文件中寻找的下一行

ERROR
。我知道
ERROR
不在文件中,所以我的期望是错误级别应该是
1
,但它一直是
0

findstr /I /C:"ERROR" "..\LogFiles\%NewLogFileName%"

IF ERRORLEVEL 1 (
     ECHO Error level AFTER Search %ERRORLEVEL%
)

我做错了什么?


自从该线程打开以来,我已将代码更改为:

findstr /I /C:"ERROR" "..\LogFiles\%NewLogFileName%"

call echo %%errorlevel%% & REM WORKS "1"

REM multiple iteration of these lines fail

REM Some things I have tried 
echo %errorlevel% & REM FAILS "0"

SET "somevar=%%errorlevel%%"

echo %somevar% & REM FAILS "0"

文本文件是基本文本。一个的内容中有存档文件,另一个的文本中没有错误。

我还能提供什么?

batch-file cmd windows-10 findstr errorlevel
1个回答
0
投票
findstr /ic:"error" "..\LogFiles\%NewLogFileName%" >nul && echo/0 || echo/1 

如果你的路径/文件存在或不存在,如果字符串找到或没有,忘记

errorlevel
,使用运算符
&&
返回0
||
返回非0

Findstr /flag(s) <file.eXt
&& (do BC Return 0) || (do instead BC Return non 0)

FINDSTR will set %ERRORLEVEL% as follows:

    0 (False) a match is found in at least one line of at least one file.
    1 (True) if a match is not found in any line of any file, (or if the file is not found at all).
    2 Wrong syntax 
    
    An invalid switch will only print an error message in error stream;

@echo off 

command 1
command 2
command ...
command n
 
findstr /ic:"strings xy" <"..\Log\%New%" >nul && (
     command 1
     command 2
     command ...
     command n
     echo/0 
    ) || (
     command 1
     command 2
     command ...
     command n
     echo/1 
    )

command 1
command 2
command ...
command n


其他资源:

© www.soinside.com 2019 - 2024. All rights reserved.