2010-07-13 6 views
6

Ich möchte eine Liste aller Dateien (einschließlich ihrer absoluten Pfad) in eine Variable, durch Leerzeichen getrennt erhalten. Mein Google-Fu scheint in dieser Hinsicht schwach zu sein, weil ich immer wieder auf Probleme stoße.Batch-Datei - Liste der Dateien in Variable schreiben

Ich habe ein Basisverzeichnis in% baseDir% gespeichert und möchte es für Dateien analysieren (nicht rekursiv oder einschließlich Unterverzeichnisse). Wie ich bereits erwähnt habe, muss dies in eine Liste aufgenommen werden. Ich könnte mir vorstellen, dass es eine nette kleine Abkürzung gibt, die ich verwenden könnte, aber eine For-Schleife und Verkettung würde auch den Trick machen.

Idealerweise würde ich so etwas wie diese:

echo fileList 

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

Antwort

12

Ganz einfach:

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

In der Tat, können Sie dieses sehr Beispiel auch für den set Befehl in der Hilfe finden, zugänglich über help set, mit einer Erklärung, warum der naive Ansatz nicht funktioniert.

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

einfache Frage, einfache Antwort ... Dank:

Um einen anderen Satz von Dateien zu verwenden (statt alle), können Sie einfach den Platzhalter ändern! – espais

+0

@espais: Es ist eine ziemlich häufige; Ich denke, ich habe es schon ungefähr ein Dutzend Mal beantwortet ;-) – Joey

+0

@Johannes ... schnelle Folge ... ist es einfach, diesen Ausschnitt auf Dateien vom Typ * .c zu beschränken? – espais