2011-02-15 7 views
11

Quiero hacer algo de procesamiento en cada línea de un archivo.Para/f nombre de archivo de archivo con espacios

for /f "delims=" %%i in ("%RF_PROPERTIES%") do (   
    echo %%i 
) 

Mis RF_PROPERTIES puntos a una ruta de archivo con espacios (C: \ Archivos de programa \ Arcot Systems \ conf \ rf.properties). Se queja diciendo que la variable de entorno C: \ Archivos de programa \ Arcot no está definida, aunque he proporcionado comillas. ¿Cómo funciona?

+0

intentar hacer set = RF_PROPERTIES "c: \ archivos de programa \ Arcot Systems \ conf \ rf.properties" antes de la loop – BlackBear

Respuesta

17

Trate de añadir la opción usebackq:

for /f "usebackq delims=" %%i in ("%RF_PROPERTIES%") do (   
    echo %%i 
) 

Explicación de la salida del for /?:

usebackq - Especifica que el nueva semántica están en vigor, donde se ejecuta una cadena entre comillas vuelta como un comando y una sola cadena entre comillas es un comando de cadena literal y permite el uso de comillas dobles para citar los nombres de archivo en conjunto de archivos.

+0

Gracias. Ingenuamente asumí que "usebackq" solo se refería al manejo de las comillas, no se me ocurrió que afectaría el manejo de las comillas dobles también. (Sí, debería haber RTF-ed todo el M.;) – yoyo

1

Usando usebackq es una buena idea - pero en realidad se tienen que usarlos:

for /f "usebackq delims=" %%i in (`dir "%RF_PROPERTIES%" /s /b`) do (
    echo %%i 
) 
+0

En realidad, no lee la parte en negrita de la cita en mi respuesta. – Blorgbeard

Cuestiones relacionadas