Lo script batch per il ciclo non imposterà la variabile

Ho uno script batch che tenta di eseguire da anthill per ottenere i nomi delle cartelle contenenti plsql da compilare.

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% *** ) 

Questo echos * ELABORAZIONE DELLA CARTELLA *

come se la variabile non venisse impostata, cosa di cui sono sicuro è vero dopo aver passato troppo tempo a verificarlo

Quindi … cosa sto sbagliando?

Questo è essenzialmente un duplicato di una domanda posta oggi . Ecco la mia risposta da detta domanda …

Ti consigliamo di guardare l’opzione EnableDelayedExpansion per i file batch. Dal link sopracitato:

L’espansione variabile ritardata è spesso utile quando si lavora con i cicli FOR. Normalmente, un intero ciclo FOR viene valutato come un singolo comando anche se si estende su più righe di uno script batch.

Quindi il tuo script finirebbe per assomigliare a qualcosa del genere:

 @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! *** ) 

In alternativa, usa la %%a variabile nel tuo loop interno, invece di creare una nuova variabile.