2015-11-11 1 views
0

Пусть говорят в текстовом файле, у меня есть:Удалить все вхождения в текстовый файл с пакетного сценария

Planets.txt

Марс
Земли
Юпитер
Сатурн
Mars
Uranus
Юпитер
Плутон

Как я могу удалить все вхождения и оставил слова появляются один раз в текстовом файле?

Output_Planets.txt(Проявления: Марс, Юпитер)

Марс
Земли
Юпитер
Сатурн
Уран
Плутон

Я понятия не имею, как это сделать ... Спасибо.

+1

['for' command] (http://ss64.com/nt/for.html) может помочь. Объедините 'for/F' с содержимым файла' Planets.txt' с 'for% G in (Mars, Jupiter) do @echo% G' (обратите внимание, что' @ echo' здесь является образцом-заполнителем). Прочитайте [ask] и Как создать [mcve]. – JosefZ

ответ

1
@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:, предшествующим строке, указывает, что указанная строка является одним элементом, а не набором строк, так что строка, содержащая разделители, может быть сопоставлена.