繁体   English   中英

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

[英]Batch perform action on all files in dir - wrong variable value?

我正在尝试使用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"
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM