2010-07-13 8 views
6

Je voudrais obtenir une liste de tous les fichiers (y compris leur chemin absolu) dans une variable, séparés par des espaces. Mon Google-fu semble être faible à cet égard, parce que je continue à rencontrer des problèmes.Fichier batch - Ecrire la liste des fichiers dans la variable

J'ai un répertoire de base stocké dans% baseDir%, et je voudrais l'analyser pour les fichiers (non récursif ou incluant les sous-répertoires). Comme je l'ai mentionné, cela doit être inscrit sur une liste. J'imagine qu'il y a un petit raccourci que je pourrais utiliser, mais une boucle for et une concaténation ferait aussi l'affaire.

Idéalement, j'aurais quelque chose comme ceci:

echo fileList 

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

Répondre

12

simple:

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

En fait, vous trouvez cela très exemple aussi dans l'aide de la commande set, accessible via help set, compléter avec une explication pourquoi l'approche naïve ne fonctionnera pas.

Pour utiliser un autre ensemble de fichiers (plutôt que tous), vous pouvez facilement changer le caractère générique:

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

question simple, réponse simple ... merci! – espais

+0

@espais: C'est un assez commun; Je pense que je l'ai répondu environ une douzaine de fois maintenant ;-) – Joey

+0

@Johannes ... suivi rapide ... est-il facile de limiter cet extrait aux fichiers de type * .c seulement? – espais

Questions connexes