2019年1月19日土曜日

バッチファイルのfor


このトシにしてようやくバッチのforを理解
forというとパラメータを指定しての繰り返し処理をイメージする
しかしバッチのforは繰り返し処理ではあるけど、フォルダ内のファイル全てに対して一括で変換、的ないわゆるバッチ処理をスムーズに行うためのものだ、ということがわかった
まさしくバッチ、だったんだなあ( ´∀`)

rem ドラッグ用_%*_で受ける_引数とおなじだね

for %%f in (%*) do (
    echo %%f
 )
rem ---------------------------------
rem フォルダ内の全てのファイルに対して実行する
rem  cd *:\**********\********\ これよりはオプションで/d が正しい使い方なのかな?

for %%f in (*.*) do (
     echo %%f
 )
pause

この構文はファイル処理に関してのもの
他にテキストを一行ごと区切り文字で区切って読み取りなんてのもある
普通のfor文は
for /l %%i in( 初期値, 終値, 増分) do echo %%i
で、lオプションという扱い
オプション無しのデフォルトはファイル操作って事になりますな

結構使えるんじゃないか、バッチのfor文(・∀・)ノ
しかし、可読性低いよな~
スクリプトのくせにぱっと見何してるのかわかんない┐('д')┌

あと、古い仕組みだからか、ファイル名の中の半角スペースに弱いです
[Program files]は普通にout!
""でくくるとか工夫が必要
しかしMSって何でフォルダに半角スペース入れるかね~

0 件のコメント:

コメントを投稿