Lyの日常

主が楽しくプログラムをカキカキするブログ

同ディレクトリのバッチを順に実行するバッチを書いた件について

会社でデザイナーの使うツールとして
「バッチを自動で実行するバッチ」を書いたので
ちょっと記事にします、ω、

前知識

コメントの書き方

@rem から始まる行はコメントです!

実行コマンドの非表示
デフォルトだと実行するコマンド自体も出力されてしまうので
コマンドは出力しないようにする

@echo off

バッチの呼び出し

call <path_to.bat>

自分自身の名前を取得

echo %0

条件分岐

簡単にif

@rem run01.bat
@echo off
if 1 == 1 (
  echo "1 is 1"
)
"1 is 1"

変数

簡単にローカルな変数を
アクセスには%%でくくる

@rem run01.bat
@echo off
set HOGE = 256
echo %HOGE%
256

繰り返し

今回はforを使用する

for %%一文字の変数 in (要素) do (処理)

for %%i in (1, 2, 3) do (
  echo %%i
)
1 2 3

ディレクトリにあるbatを実行

実際のものとは違いますがだいたいこんな感じです

@echo off

for %%i in (*.bat) do (
  if %0 NEQ %%i (
    call %%i
  )
)

ディレクトリにあるbatの検索

for %%i in (*.bat) do ()

NEQ(!=)を使い自分自身を実行しないようにする

if %0 NEQ %%i ()

最後に

条件分岐とかつかってバッチを書いたのは初めてでしたが
C/C++やってれば大抵の言語は似たようなものなので
時間はかからなかったです
forの変数が%%から始まりなおかつ名前は一文字という謎制約とか
古い技術の片鱗を味わった気がするぜ。ω。