web-dev-qa-db-ja.com

重複行を削除してファイルを並べ替えるバッチ?

テキストファイルがある場合は、コマンドsort input.txt output.txtで並べ替えることができます。どういうわけか、テキストファイルから重複する行も削除できますか? (理想的には、Windowsでバッチファイルで実行できるソリューションが必要です。)

これは基本的に、テキストファイルから重複を削除する方法を尋ねるのと同じです。 (明らかに、最初に並べ替えてからバッチを使用して重複を削除できるためです。)並べ替えについても説明した理由は、ファイルが並べ替えられており、連続した行にしか表示されないことがわかっている場合は、重複を削除する方が簡単だと思うからです。 。したがって、並べ替えと一緒に重複を削除する方法がある可能性が高いと思います。 (そして、私がこのIDを使用したい目的のために、繰り返される行が削除されている限り、ファイル内の行の順序が変更されても関係ありません。)

たとえば、次のようなファイルから:

100
100
100
100
101
101
102

入手したい

100
101
102
1
Martin

重複行を削除してファイルを並べ替えるバッチ?

以下は、このタスクを完了するために要求したとおりのバッチスクリプトネイティブWindowsソリューションです。それに応じて、入力ファイルと出力ファイルの変数を設定するだけです。

ボーナスノート:SET InputFile=%~1をそのように変更すると、ファイルを保存済みにドラッグできますバッチスクリプトを実行すると、単純なドラッグアンドドロップ方法を使用してタスクが完了します。

バッチスクリプト

@ECHO ON

SET InputFile=C:\folder\path\Input.txt
::SET InputFile=%~1
SET OutputFile=C:\folder\path\Output.txt

SET PSScript=%Temp%\~tmpRemoveDupe.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Get-Content "%InputFile%" ^| Sort-Object ^| Get-Unique ^> "%OutputFile%">>"%PSScript%"

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"

GOTO EOF

その他のリソース

3
Pimp Juice IT