2010-07-13 17 views
6

Vorrei ottenere un elenco di tutti i file (incluso il loro percorso assoluto) in una variabile, separati da spazi. Il mio Google-fu sembra essere debole in questo senso, perché continuo a incorrere in problemi.File batch - Scrive l'elenco dei file nella variabile

Ho una directory di base memorizzata in% baseDir%, e vorrei analizzarla per i file (non ricorsivamente o includendo sottodirectory). Come ho detto, questo deve entrare in una lista. Immagino che ci sia una bella scorciatoia che potrei usare, ma un loop for e una concatenazione farebbero anche il trucco.

Idealmente, mi piacerebbe avere qualcosa di simile:

echo fileList 

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

risposta

12

Abbastanza semplice:

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

In realtà, hai trovato molto esempio, anche nella guida per il comando set, accessibile via help set, completa con una spiegazione del perché l'approccio ingenuo non funzionerà.

Per utilizzare un diverso insieme di file (piuttosto che tutto), si può facilmente cambiare il carattere jolly:

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

domanda semplice, semplice risposta ... grazie! – espais

+0

@espais: è piuttosto comune; Penso di averlo risposto circa una dozzina di volte ormai ;-) – Joey

+0

@Johannes ... followup veloce ... è facile limitare questo snippet ai file di solo tipo * .c? – espais