Batch file 在批处理脚本中搜索文件并处理这些文件?

Batch file 在批处理脚本中搜索文件并处理这些文件?,batch-file,cmd,Batch File,Cmd,我试图在VisualStudio项目的预构建阶段做一些事情。具体来说,我正在尝试对项目中的所有*.resx文件执行一些命令。这里是我所拥有的,但当文件/目录路径中有一个空间时,它就不起作用了。我怎样才能绕过这些空间 for /f %%a in ('dir /B /S *.resx') do echo "%%a" 您可以在Windows上使用它-它包括“find”和“xargs”您还可以安装cygwin以获得一个完整的Unix风格的shell,它附带了可靠的旧“find”命令以及一系列其他工具。

我试图在VisualStudio项目的预构建阶段做一些事情。具体来说,我正在尝试对项目中的所有*.resx文件执行一些命令。这里是我所拥有的,但当文件/目录路径中有一个空间时,它就不起作用了。我怎样才能绕过这些空间

for /f %%a in ('dir /B /S *.resx') do echo "%%a"

您可以在Windows上使用它-它包括“find”和“xargs”

您还可以安装cygwin以获得一个完整的Unix风格的shell,它附带了可靠的旧“find”命令以及一系列其他工具。比如说,

find . -name "*.resx" | xargs grep MyProjectName

坚持使用shell的For文本解析器

for /f "delims=|" %%a in ('dir /B /S *.resx') do echo "%%a"
只需添加一个delims选项(对于一个显然不可能存在的delim角色),等等


在缺少此delims选项的情况下,/f将执行它应该执行的操作,即通过在每个空格或制表符序列上拆分输入来解析输入。

您正在无意中使用默认的空格delimeter。您可以通过如下方式重置delims来解决此问题:

for /f "delims=" %%a in ('dir /B /S *.resx') do echo "%%a"

您知道的
也可以在目录上递归运行吗

for /r %%x in (*.resx) do echo "%%x"

这比摆弄分隔符要容易得多,并且使您不用运行
dir

来生成所有相关文件的简单文件列表,以供以后处理

@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

你让你的整个建筑都依赖于cygwin的存在。不太好。更不用说这个任务非常不需要它了。这看起来是最干净的解决方案。我知道一定有诡计。我只是太习惯于不写脚本了,那里的事情容易多了。谢谢大家提供的信息。嗯,它几乎没有比find/xargs更复杂,imho。可能是