使用批处理脚本删除文本文件中的所有事件
Remove all occurrences in a text file with batch script
假设在一个文本文件中,我有:
Planets.txt
Mars
Earth
Jupiter
Saturn
Mars
Uranus
Jupiter
Pluto
我怎样才能删除所有出现的地方并让单词在文本文件中只出现一次?
Output_Planets.txt (Occurrences: Mars, Jupiter)
Mars
Earth
Jupiter
Saturn
Uranus
Pluto
我不知道该怎么做...谢谢。
@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
的文件,其中包含您的数据用于我的测试。
产生 u:\newfile.txt
如果在新文件中找到匹配 %%a
的字符串,FINDSTR
会将 errorlevel
设置为 0
。 /x
强制整行匹配,/i
指定匹配不区分大小写。 /l
使匹配文字,而不是 正则表达式 和 /c:
在字符串前面指定提供的字符串是一个元素,而不是一组字符串,因此可以匹配包含分隔符和空格的字符串。
假设在一个文本文件中,我有:
Planets.txt
Mars
Earth
Jupiter
Saturn
Mars
Uranus
Jupiter
Pluto
我怎样才能删除所有出现的地方并让单词在文本文件中只出现一次?
Output_Planets.txt (Occurrences: Mars, Jupiter)
Mars
Earth
Jupiter
Saturn
Uranus
Pluto
我不知道该怎么做...谢谢。
@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
的文件,其中包含您的数据用于我的测试。
产生 u:\newfile.txt
如果在新文件中找到匹配%%a
的字符串,FINDSTR
会将 errorlevel
设置为 0
。 /x
强制整行匹配,/i
指定匹配不区分大小写。 /l
使匹配文字,而不是 正则表达式 和 /c:
在字符串前面指定提供的字符串是一个元素,而不是一组字符串,因此可以匹配包含分隔符和空格的字符串。