10

I'd like to get a list of all files (including their absolute path) into a variable, separated by spaces. My Google-fu seems to be weak in this regard, because I keep running into issues.

I have a base directory stored in %baseDir%, and would like to parse it for files (not recursing or including sub-directories). Like I mentioned, this needs to go into a list. I'd imagine there's a nice little shortcut I could use, but a for loop and concatenation would do the trick as well.

Ideally, I'd have something like this:

echo fileList

C:\file1.c C:\file2.c C:\file3.c
Nae
  • 14,209
  • 7
  • 52
  • 79
erik
  • 3,810
  • 6
  • 32
  • 63

1 Answers1

18

Pretty simple:

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

In fact, you find this very example also in the help for the set command, accessible via help set, complete with an explanation why the naïve approach won't work.

To use a different set of files (rather than all), you can easily change the wildcard:

for %%x in (%baseDir%\*.c) do set LIST=!LIST! %%x
Joey
  • 344,408
  • 85
  • 689
  • 683