如果 findstr 失败,批处理无法回显循环变量
Batch Unable to echo for loop variable if findstr fails
我正在尝试创建一个字符串来搜索文本文件中的每一行,如果有匹配项,它什么也不做,但如果找到没有匹配项的行,它会回显到输出文本文件。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims= " %%a in (C:\listtocheck.txt) do (
findstr /i %%a C:\master.txt
if %errorlevel%==1 (echo !%%a! >> "c:\results.txt")
)
我不知道如何才能完成这项工作,也找不到任何好的工作示例可供参考。
MASTER FILE
KB3216916
KB3214051
KB4012373
LISTTOCHECK FILE
HotFixID
KB2849697
KB2849696
KB2841134
KB2670838
任何帮助将不胜感激
要使您的批处理工作,您可以使用 if %errorlevel%==1
:
if errorlevel 1
参见 if /?
if !errorlevel!==1
参见 delayed expansion
但我建议改用 conditional execution。更改了当前目录的路径。
@echo off
Type Nul > results.txt
for /f "tokens=* delims= " %%a in (listtocheck.txt
) do findstr /i "^%%a" master.txt >Nul 2>&1 ||(>>"results.txt" echo %%a)
Type results.txt
另一种更简单的方法是使用 findstr 的 /V + /G 选项来颠倒顺序:
> findstr /i /V /G:Master.txt LISTTOCHECK.txt >results.txt
results.txt 的示例输出:
HotFixID
KB2849697
KB2849696
KB2841134
KB2670838
我正在尝试创建一个字符串来搜索文本文件中的每一行,如果有匹配项,它什么也不做,但如果找到没有匹配项的行,它会回显到输出文本文件。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims= " %%a in (C:\listtocheck.txt) do (
findstr /i %%a C:\master.txt
if %errorlevel%==1 (echo !%%a! >> "c:\results.txt")
)
我不知道如何才能完成这项工作,也找不到任何好的工作示例可供参考。
MASTER FILE
KB3216916
KB3214051
KB4012373
LISTTOCHECK FILE
HotFixID
KB2849697
KB2849696
KB2841134
KB2670838
任何帮助将不胜感激
要使您的批处理工作,您可以使用 if %errorlevel%==1
:
if errorlevel 1
参见 if /?if !errorlevel!==1
参见 delayed expansion
但我建议改用 conditional execution。更改了当前目录的路径。
@echo off
Type Nul > results.txt
for /f "tokens=* delims= " %%a in (listtocheck.txt
) do findstr /i "^%%a" master.txt >Nul 2>&1 ||(>>"results.txt" echo %%a)
Type results.txt
另一种更简单的方法是使用 findstr 的 /V + /G 选项来颠倒顺序:
> findstr /i /V /G:Master.txt LISTTOCHECK.txt >results.txt
results.txt 的示例输出:
HotFixID
KB2849697
KB2849696
KB2841134
KB2670838