【问题标题】:Dealing with spaces in filenames in a batch loop [duplicate]在批处理循环中处理文件名中的空格[重复]
【发布时间】:2013-11-14 19:18:19
【问题描述】:

我尝试编写一个批处理文件,该批处理文件递归地遍历目录(也考虑到空格)并执行 ImageMagick 命令。我有以下内容:

for /R %%a IN (*.png) do mogrify %%a -fuzz 0% -transparent none

注意:这会被空格卡住。

我也试过这个:

for /R "tokens=*" %%a IN (*.png) do mogrify %%a -fuzz 0% -transparent none

注意:此版本不吐错,但不修改文件夹内容。

感谢任何帮助。 亲切的问候, 亚历克斯

【问题讨论】:

  • Mistype^^^ for /R "tokens=*" %%a IN (.png) do mogrify %%a -fuzz 0% -transparent none
  • 类似 - 但我试图不指定目录。我也在使用 ImageMagic 命令。
  • 这些答案中有信息。阅读它们,看看它们如何应用于您自己的代码。例如,第二个在for 循环中使用echodir 列表中输出文件名;该示例在此处直接应用于您的问题。
  • 为此认真考虑使用 Powershell。它不会有同样的空格问题,而且它的循环结构要简单得多:Get-ChildItem *.png | ForEach-Object { mogrify $_ -fuzz 0% -transparent none } 甚至更短:ls *.png | % { mogrify $_ fuzz 0% -transparent none }
  • 谢谢大家!大卫的解决方案就像一个魅力!

标签: loops batch-file


【解决方案1】:
for /R %%a IN (*.png) do mogrify "%%~fa" -fuzz 0%% -transparent none

请注意0%% 中的双百分号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多