【发布时间】:2016-04-11 02:56:21
【问题描述】:
我在批处理文件 (Windows) 中有以下代码。它返回目录中每个.jpg 文件的路径列表。然后将该列表传递给 ImageMagick Convert 函数(不是 Windows 转换函数)以创建 pdf。
echo moving CMD to drive location at %~dp1
CD /d %~dp1
echo getting the list of file names
FORFILES /p %~dp1 /s /m "*.jpg" /C "cmd /c echo @path" > files.txt
echo creating the pdf using ImageMagick
convert @files.txt test.pdf
这适用于返回 jpg 图像数据或其他单一文件类型。我需要它来搜索多种图像文件类型,我已经看到了 this 示例解决方案,您可以将 FORFILES 放入 FOR 循环中。
for %%G in ( .jpg , .tif ) do FORFILES /p %~dp1 /s /m "*.jpg" /C "cmd /c echo @path" > files.txt
但如果我这样做,程序就不再是递归的了。 forfiles 中的 /s 不再有效。
我已经尝试过FOR /R,但它不能处理带有空格的文件夹名称,我需要这样做。
关于如何保持这种递归性并且不会对带有空格的文件夹名称有任何想法?
【问题讨论】:
-
for /r列出整个文件名,因此只需将变量用引号括起来或使用for /F "usebackq tokens=*" %a in ('%a')
标签: windows batch-file for-loop recursion spaces