我正在尝试创建一个字符串来搜索文本文件中的每一行,如果有匹配则它什么都不做,但是如果它找到没有匹配的行,它会回显到输出文本文件。
@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
任何帮助将不胜感激
答案 0 :(得分:0)
要使您的批处理工作,您可以使用而不是if %errorlevel%==1
:
if errorlevel 1
请参阅if /? if !errorlevel!==1
请参阅delayed expansion 但我建议改用conditional execution。将pathes更改为当前目录。
@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