2015-02-15

ドロップで処理するタイプのバッチファイル

コマンドプロンプトネタです。

バッチファイルに、ファイルをドラッグ&ドロップしてあげると、処理されるタイプのバッチファイルですね。

ざっくりと示すとこんな感じ。

@echo off

:StartProcess
if "%~1" equ "" goto EndProcess

:Process
echo Target: %~1

:NextProcess
shift
goto StartProcess

:EndProcess

:Process に続くところで、処理をしてあげれば OK。
サンプルとして、ECHO でファイル名を表示するようにしてあります。

重要なところ (弄るべきところ) 以外について。
:StartProcess のところでは、次のファイルがなくなったら、EndProcess にジャンプするようにしてあります。 (ないと無限ループするはず。)

さらに、特定の拡張子のファイルだけを処理してあげたい場合には、次のようにしてあげると良いかと思います。
下の例の動きとしては、「テキストファイルでなかったら、NextProcess にジャンプして、次のファイルに移る」ようになっています。

...
:StartProcess
if "%~1" equ "" goto EndProcess
:: 拡張子によって処理
if not "%~x1" equ ".txt" goto NextProcess
...

NextProcess では、SHIFT で、引数 (%0, %1, ..., %9) を大きい方から小さい方にシフトしています。そうしないと、同じ引数 (今回は %1) を使って、繰り返し処理を記述することができません。そして、終わったら、StartProcess にジャンプして、次のファイルを処理します。





実は、私のブログ投稿「LaTeX 関係のバッチファイルなどなどなど。 」の Replace.cmd で登場していたりします。

他にも色々とできるはずなので、使いこなしてみてください!

0 件のコメント :

コメントを投稿