プログラミング-VBDOSでbatプログラムをちゃちゃっと作るはずだったのですが、見事にハマったのでメモ。(未だにDOSを使わざるをえないのです。)やりたかったことFor文の中で変数をインクリメントしたい。%num%)出力結果は......000なぜ??ポイントは「環境変数の展開タイミング」にあるbatプログラムは、実行時ではなくプログラム1行ごとのの読込み時に変数を展開します。%num%)で1行です。そのため上記のプログラムは、FOR文を読み込んだ段階で次のように変数を展開してから実行されます。0)アンビリーバボーですね!まさかの展開ですね!ちなみにこれを「環境変数の即時展開」と呼びます。「環境変数の遅延展開」が答え!この「即時展開」を「遅延展開」する、つまりプログラム実行時に変数を展開することで、問題を解決できます。遅延展開を行うには2つのプロセスが必要です。遅延の展開を有効にするbatプログラムの冒頭で次の宣言を行います。enabledelayedexpansionこれにより「遅延展開」を有効化します。2.!変数!で遅延展開を実施する。遅延展開を行う変数は、通常の変数(%変数%)と宣言方法が異なります。「%」ではなく「!」(エクスクラメーション)で変数を囲むことで、「その変数は遅延展開するんだよ」という意味合いになります。!num!)出力結果は......123やりました!!参考にさせていただきましたこちらのサイトに詳しく紹介されています。はてなブログPro学んだ技術まとめるはずが、仙台のことや日常のことを綴っているブログ。(1)スポンサーリンクはてなブログをはじめよう!WorldWorldWorldさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。