2008年2月7日木曜日

DOSでディレクトリ配下の全てのファイルの拡張子を取り出す。

フォルダ同士の同期を取るときに
必要な拡張子だけを同期するという
ツールがあったのでその前提として
タイトル通りの処理が必要になった
ので作ってみた。


@ECHO OFF

c:
cd temp

for /r %%i in (*) do echo %%~xi >> tmp.txt

sort tmp.txt /o tmp.txt

set prev=
for /f "tokens=* delims=" %%L in ( tmp.txt ) do call :sub %%L
goto exit

:sub
if /i not "%prev%"=="%*" echo %* >> log.txt
set prev=%*
goto :EOF

:exit
del /q tmp.txt
goto :EOF

処理的にはまず、カレントディレクトリ配下の全ての
ファイルの拡張子を抜き出して一時ファイルに保存。

その後、重複した拡張子を取り除くための前準備として
一時ファイルを昇順で並び替え同一ファイル名で保存。

最後に一時ファイルを一行ずつ読み込み、前の行と
異なっていたら、ファイルに出力という感じ。

これは一回使ったら、めったに使うことなさそうだ・・・

0 件のコメント: