使用Windows批处理从文本文件中删除重复行

时间:2015-03-24 19:37:07

标签: windows batch-file

我想从文本文件中删除重复的行,但只使用Windows批处理脚本保留第一次出现。

我尝试了很多方法,但它很长而且效率不高。

你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

下面的批处理文件可以执行您想要的操作:

@echo off
setlocal EnableDelayedExpansion
set "prevLine="
for /F "delims=" %%a in (theFile.txt) do (
   if "%%a" neq "!prevLine!" (
      echo %%a
      set "prevLine=%%a"
   )
)

如果您需要更高效的方法,请尝试使用此开发为过滤器的Batch-JScript混合脚本,即类似于Unix uniq程序。使用.bat扩展名保存,例如uniq.bat

@if (@CodeSection == @Batch) @then

@CScript //nologo //E:JScript "%~F0" & goto :EOF

@end

var line, prevLine = "";
while ( ! WScript.Stdin.AtEndOfStream ) {
   line = WScript.Stdin.ReadLine();
   if ( line != prevLine ) {
      WScript.Stdout.WriteLine(line);
      prevLine = line;
   }
}

这两个程序都是从this post复制的。