2010-07-13 11 views
6

Me gustaría obtener una lista de todos los archivos (incluida su ruta absoluta) en una variable, separados por espacios. Mi Google-fu parece ser débil en este sentido, porque sigo encontrando problemas.Archivo por lotes - Escribir lista de archivos en la variable

Tengo un directorio base almacenado en% baseDir%, y me gustaría analizarlo en busca de archivos (sin recurrir o incluir subdirectorios). Como mencioné, esto tiene que ir a una lista. Me imagino que hay un buen atajo pequeño que podría usar, pero un bucle for y la concatenación harían el truco también.

Idealmente, tendría algo como esto:

echo fileList 

C:\file1.c C:\file2.c C:\file3.c 

Respuesta

12

Muy simple:

setlocal enabledelayedexpansion enableextensions 
set LIST= 
for %%x in (%baseDir%\*) do set LIST=!LIST! %%x 
set LIST=%LIST:~1% 

De hecho, se encuentra este mismo ejemplo también en la ayuda para el comando set, accesible a través help set, complete con una explicación de por qué el enfoque ingenuo no funcionará.

Para utilizar un conjunto diferente de archivos (en lugar de toda ), se puede cambiar fácilmente el comodín:

for %%x in (%baseDir%\*.c) do set LIST=!LIST! %%x 
+0

simple pregunta, respuesta simple ... gracias! – espais

+0

@espais: es bastante común; Creo que ya lo he respondido aproximadamente una docena de veces ;-) – Joey

+0

@Johannes ... seguimiento rápido ... ¿es fácil restringir este fragmento a archivos del único tipo * .c? – espais

Cuestiones relacionadas