我想删除文本文件中的重复行,但只保留使用Windows批处理脚本第一次发生。
我尝试了很多方法,但是很长而且效率不高。
你能帮忙吗?
下面的批处理文件做你想要的:
@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; } }
这两个程序都是从这个帖子复制的 。