@ECHO OFF
SETLOCAL
:: establish a zero-byte output file
SET "newfile=u:\newfile.txt"
COPY /y nul "%newfile%" 2>NUL >nul
FOR /f "delims=" %%a IN (q33645665.txt) DO (
FINDSTR /x /i /l /c:"%%a" "%newfile%" >NUL
IF ERRORLEVEL 1 >>"%newfile%" ECHO %%a
)
TYPE "%newfile%"
GOTO :EOF
Я использовал файл с именем q33645665.txt
, содержащий данные для моего тестирования.
Производит и: \ newfile.txt
FINDSTR
установит errorlevel
в 0
, если строка, соответствующая %%a
находится в новом файле. /x
заставляет матч быть на всей линии, /i
указывает, что совпадение не зависит от регистра. /l
делает совпадение буквенным, а не регулярным выражением и /c:
, предшествующим строке, указывает, что указанная строка является одним элементом, а не набором строк, так что строка, содержащая разделители, может быть сопоставлена.
['for' command] (http://ss64.com/nt/for.html) может помочь. Объедините 'for/F' с содержимым файла' Planets.txt' с 'for% G in (Mars, Jupiter) do @echo% G' (обратите внимание, что' @ echo' здесь является образцом-заполнителем). Прочитайте [ask] и Как создать [mcve]. – JosefZ