Reputation: 3208
I'm trying to do some things during the pre-build phase of a visual studio project. Specifically, I'm trying to execute some commands on all *.resx files within the project. Here is what I have but it doesn't work when the files/directory path have a space in them. How do I get around these spaces?
for /f %%a in ('dir /B /S *.resx') do echo "%%a"
Upvotes: 13
Views: 50693
Reputation: 11
To generate a simple file list of all the relevant files for later processing
@echo create a results file…
if exist results.txt (del results.txt)
echo. >NUL 2>results.txt
@echo minimal recursive subdirectory search for filespec...
dir /s /a /b "*.resx" >>results.txt
Upvotes: 1
Reputation: 354356
You know that for
can also run recursively over directories?
for /r %%x in (*.resx) do echo "%%x"
Much easier than fiddling with delimiters and saves you from running dir
.
Upvotes: 24
Reputation: 75095
Stick with the For text parser of the shell
for /f "delims=|" %%a in ('dir /B /S *.resx') do echo "%%a"
just add a delims option (for a delim character which obviously couldn't exist), et voila!
In the absense of this delims option, /f will do what it is supposed to, i.e. parse the input by splitting it at every space or tabs sequence.
Upvotes: 4
Reputation: 39475
You are running into inadvertant use of the default space delimeter. You can fix that by resetting the delims like so:
for /f "delims=" %%a in ('dir /B /S *.resx') do echo "%%a"
Upvotes: 3
Reputation: 1080
You could also install cygwin to get a full-blown Unix-esque shell, which comes with the trusty old "find" command, plus a bunch of other tools. For example,
find . -name "*.resx" | xargs grep MyProjectName
Upvotes: 2