batでプログラム

どうしてもブロック内だとsetが動作しないので調べてみると

いった内容のバッチファイルがあったとします。これをぱっと見ると"hogehuga"という出力がされると期待してしまいますが、実際に実行してみると"foobar"という出力結果が得られます。なぜこのような結果になるかといいますと、各コマンドが実行されるときに環境変数が展開されるのではなく、バッチファイルのテキスト行が読み取られるときに展開が行われてしまうからで、上の例は次のように解釈されているために期待した結果が得られないのです。

というわけでfo

for文

@echo off
setlocal enabledelayedexpansion
for /L %%%k in (1,1,10) do ( 
set /a j=%%k %% 2
echo %%k
echo !j!
)

参考:http://f32.aaa.livedoor.jp/~kobun/index.php?CMD.EXE%A4%CE%C3%D9%B1%E4%B4%C4%B6%AD%CA%D1%BF%F4%A4%CE%C5%B8%B3%AB