2012-09-20 19 views
7

Tengo un script por lotes que intenta ejecutar desde anthill para obtener los nombres de las carpetas que contienen plsql para compilar.La secuencia de comandos por lotes para el bucle no configurará la variable

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

Este ecos * * CARPETA DE PROCESAMIENTO

como si la variable no se está establecido, que estoy bastante seguro de que es cierto después de pasar demasiado tiempo en la verificación de que

Así ...¿Qué estoy haciendo mal?

+0

Sugerencia: Buscar 'ENABLEDELAYEDEXPANSION ' – adarshr

+2

Hay muchas MUCHAS preguntas existentes que tratan este mismo problema, y ​​todas tienen una respuesta similar. La respuesta se puede encontrar dentro del sistema de ayuda: escriba 'HELP FOR' o' FOR /? 'Desde la línea de comando. Sugerencia: busque una discusión sobre Expansión retrasada. – dbenham

+0

@dbenham - :-) Estás muerto, ¿verdad? Si recibo solo un centavo por este tipo de pregunta ... – jeb

Respuesta

23

Esto es esencialmente un duplicado de question asked earlier today. Esta es mi respuesta de dicha pregunta ...

Querrá consultar la opción EnableDelayedExpansion para archivos de proceso por lotes. Desde el enlace mencionado anteriormente:

La expansión de la variable retrasada suele ser útil cuando se trabaja con FOR Loops. Normalmente, todo un bucle FOR se evalúa como un único comando, incluso si abarca varias líneas de un script por lotes.

Así que su secuencia de comandos se terminan buscando algo como esto:

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

Como alternativa, sólo tiene que utilizar la variable %%a en su bucle interno, en lugar de crear una nueva variable.

+0

Gracias Jonah! Creo que funcionó. No tuve ningún eco en mi primer intento de usar la expansión de enabledelayeye ... ya que estaba tratando de repetir el valor para ver si estaba configurado, ¡ah los círculos en los que corremos! –

+0

¡Me alegra ayudar! No se olvide de marcar la respuesta como aceptada, si fue de ayuda. De esta manera, los futuros visitantes a esta pregunta pueden beneficiarse de su experiencia. –

+0

Haré. Gracias de nuevo. –

Cuestiones relacionadas