【发布时间】:2010-11-29 16:21:33
【问题描述】:
我正在尝试在 Visual Studio 项目的预构建阶段做一些事情。具体来说,我正在尝试对项目中的所有 *.resx 文件执行一些命令。这是我所拥有的,但是当文件/目录路径中有空格时它不起作用。如何绕过这些空间?
for /f %%a in ('dir /B /S *.resx') do echo "%%a"
【问题讨论】:
标签: batch-file cmd
我正在尝试在 Visual Studio 项目的预构建阶段做一些事情。具体来说,我正在尝试对项目中的所有 *.resx 文件执行一些命令。这是我所拥有的,但是当文件/目录路径中有空格时它不起作用。如何绕过这些空间?
for /f %%a in ('dir /B /S *.resx') do echo "%%a"
【问题讨论】:
标签: batch-file cmd
生成所有相关文件的简单文件列表以供以后处理
@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
【讨论】:
您知道for 也可以在目录上递归运行吗?
for /r %%x in (*.resx) do echo "%%x"
比摆弄分隔符要容易得多,并且让您免于运行dir。
【讨论】:
坚持使用 shell 的 For 文本解析器
for /f "delims=|" %%a in ('dir /B /S *.resx') do echo "%%a"
只需添加一个 delims 选项(对于一个明显不存在的 delim 字符),瞧!
如果没有这个 delims 选项,/f 将做它应该做的事情,即通过在每个空格或制表符序列处拆分输入来解析输入。
【讨论】:
您无意中使用了默认的空格分隔符。您可以通过像这样重置分隔符来解决这个问题:
for /f "delims=" %%a in ('dir /B /S *.resx') do echo "%%a"
【讨论】:
您还可以安装 cygwin 来获得一个成熟的 Unix 风格的 shell,它带有可信赖的旧“find”命令,以及许多其他工具。例如,
find . -name "*.resx" | xargs grep MyProjectName
【讨论】:
您可以在 Windows 上使用 findutils - 它包括“find”和“xargs”
【讨论】: