【バッチファイル】テキストファイルをソートして、重複行を削除する

バッチファイルで
 ・テキストファイルをソートして、重複行を削除
できます!

バッチファイルから
 ・Power Shellのコマンドレットを実行
することで実現します!

PR

コード

ここでは例として
 ・デスクトップ配下のテキストファイル「sample.txt」をソートして、重複行を削除
します。

テキストファイル「sample.txt」
テキストファイル「sample.txt」
テキストファイル「sample.txt」の内容(ソートされていない、かつ重複行あり)
テキストファイル「sample.txt」の内容(ソートされていない、かつ重複行あり)

上記は「1,田中,2020/1/1」が重複しています。

@echo off

rem 対象ファイル
set targetFile=C:\Users\user\Desktop\sample.txt

rem PowerShellのコマンドレットを組み立て(昇順でソートかつ重複行を削除)
set psCommand="(Get-Content %targetFile%) | Sort-Object -Unique | Out-File -Encoding default %targetFile%"
rem PowerShellのコマンドレットを組み立て(降順でソートかつ重複行を削除)
rem set psCommand="(Get-Content %targetFile%) | Sort-Object -Descending -Unique | Out-File -Encoding default %targetFile%"

rem PowerShellのコマンドレットを実行
powershell -NoProfile -ExecutionPolicy Unrestricted %psCommand%

rem 実行結果を確認
if %errorlevel% == 0 (
	echo 正常終了しました。戻り値:%errorlevel%
) else (
	echo 異常終了しました。戻り値:%errorlevel%
)

echo.

pause
exit

対象ファイルを指定します(4行目)。

実行するPower Shellのコマンドレットを組み立てます(7行目)。
※以下のコマンドレッによりソートをします。
 Get-Content・・・対象ファイルの内容を取得します。
 Sort-Object・・・ソートします。 ※「-Unique
により重複行を削除します。
 Out-File・・・・ファイルへ出力します。 ※文字化けしないように「-Encoding default」を付けます。

PR

実行結果

テキストファイルをソートして、重複行を削除できました。

実行結果①
実行結果②
実行結果②
PR

参考①

上記のコードは以下の記事を参考にして作成しました。

PR

参考②

上記で使用した以下の詳細は、公式サイトをご確認ください。

●「Get-Content」コマンドレット


●「Sort-Object」コマンドレット


●「Out-File」コマンドレット