Windowsバッチファイル(.bat) ファイルの重複削除


この記事はプロモーションを含みます。

ホーム > コマンドプロンプト・バッチファイル リファレンス

ファイル内の重複した行を削除し、別のファイルに出力するバッチを作ったのでご紹介します。

使用方法

以下のように定義してバッチを実行します。
ファイル名のみを定義した場合、バッチと同じフォルダが参照されます。
・inputFile:重複削除前のファイル
・outputFile:重複削除後のファイル

ソースコード

仕組みはシンプルで、入力ファイルを読み込むのと同時に出力ファイルの読み込みを行い、出力ファイルに存在しない値の場合のみ、リダイレクトで出力ファイルに追記しています。

@echo off

set inputFile="input.txt"
set outputFile="output.txt"
type nul > %outputFile%

setlocal enabledelayedexpansion
for /f "delims= usebackq" %%i in (%inputFile%) do (
	set writeFlg=1
	for /f "delims= usebackq" %%j in (%outputFile%) do (
		if %%i == %%j (
			set writeFlg=0
			break
		)
	)
	if !writeFlg! equ 1 (
		echo %%i>>%outputFile%
	)
)
endlocal

exit

記事は以上です。仕組みはシンプルですが、バッチの場合は遅延環境変数など独自のお作法があり、ややこしいんですよね。サーバ機など、使用出来るものが限られている環境では、未だバッチも使用されていると思うので、是非ご活用ください。

コメント

タイトルとURLをコピーしました