11

plsql を含むフォルダー名をコンパイルするために、anthill から実行しようとしているバッチ スクリプトがあります。

for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
  set FOLDER=%%a
  echo *** PROCESSING FOLDER %FOLDER% ***
)

これは反響し ます * PROCESSING FOLDER *

あたかも変数が設定されていないかのように

だから...私は何を間違っていますか?

4

1 に答える 1

26

これは本質的に、今日以前に尋ねられた質問の複製です。これが、上記の質問からの私の答えです...

バッチ ファイルのEnableDelayedExpansionオプションを確認する必要があります。前述のリンクから:

遅延変数展開は、FOR ループを使用する場合に便利です。通常、FOR ループ全体は、バッチ スクリプトの複数行にわたる場合でも、1 つのコマンドとして評価されます。

したがって、スクリプトは次のようになります。

@echo off
setlocal enabledelayedexpansion

for /F %%a in ('dir /b D:\AHP_WorkDir\var\jobs\projects\rprt_test\rprt_test\plsql') do (
  set FOLDER=%%a
  echo *** PROCESSING FOLDER !FOLDER! ***
)

%%a別の方法として、新しい変数を作成するのではなく、内側のループで変数を使用するだけです。

于 2012-09-20T18:09:03.307 に答える