批量对目录中的所有文件执行操作-变量值错误?

乔·戴恩斯

我正在尝试使用swftools将SWF文件夹转换为图像。实际的转换工作正常,但是我在尝试使其在文件夹中的所有文件上运行时遇到问题。(也很高兴它也能适用于所有子文件夹)。

假设该文件夹包含以下文件:1.swf,2.swf,...现在,我为此编写的脚本是:

for %i in (*.swf) do (
set fileName=%i
swfrender "%fileName%" -o "%fileName:~0,-4%.png"
)

我正在从包含SWF文件的文件夹中运行该文件。但是,而不是预期的结果,我在命令提示符下看到以下内容:

设置fileName = 1.swf swfrender“ 3.swf” -o“ 3.png”)

设置fileName = 2.swf swfrender“ 3.swf” -o“ 3.png”)

现在,从我可以找到的脚本来看,应该没问题,所以我不知道出了什么问题。

奇怪的是,以下似乎确实起作用:

for /R %x in (*.swf) do swfrender %x -o %x.png

但是我宁愿不必重命名数百个文件来从文件名中删除多余的.swf部分。

恩波科马卡

您需要延迟扩展(在批处理文件中,您需要%将循环令牌加倍):

setlocal enableDelayedExpansion
for %%i in (*.swf) do (
  set fileName=%%i
  swfrender "!fileName!" -o "!fileName:~0,-4!.png"
)

或者您可以提取不带扩展名的文件名:

for %%i in (*.swf) do (
  swfrender "%%~i" -o "%%~ni.png"
)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章