フルパスのファイル名を付けてテキストファイルを連結するソフトが無いかと
言われたのでひさびさにバッチファイルを書いてみました。
@echo off
setlocal
set o=a.log
if "%~1"=="" exit /b
cd %1 || exit /b
if exist %o% del %o%
for /r %%a in (*.txt *.htm*) do >> "%~1\%o%" (echo %%a && type "%%a")
endlocal
setlocal
set o=a.log
if "%~1"=="" exit /b
cd %1 || exit /b
if exist %o% del %o%
for /r %%a in (*.txt *.htm*) do >> "%~1\%o%" (echo %%a && type "%%a")
endlocal
Windows2000以降なら動きます。
(echotype.cmdのように拡張子をcmdで保存すると
9X系のDOSバッチファイルじゃないことが明確になります。)
保存したcmdファイルにフォルダをドラッグ&ドロップすると
全サブフォルダの*.txt *.html *.htmファイルを探して
ドラッグしたフォルダの中のa.logというファイルに全ファイルを結合します。
%~1とかを知らないと引用符で囲まれた文字列と
そうでない文字列を同等に扱えないから
コマンドラインパラメータとGUI(ドラッグ&ドロップ)両方に対応した
スクリプトが書けないんですね。知らなかった。
当たり前なんでしょうが、連結に || && がつかえたりとUNIXと同じなんだと
変なところでなぜか感心。
コマンドラインスクリプトも時に便利。簡単なことは簡単に。難しいことは別言語で。
コメント