在Windows cmd中循环递归文件夹以重命名文件

10
我将尝试使用ImageMagic遍历带有图片的文件夹,并创建缩略图,同时在缩略图文件名前添加small_前缀。

当我在单个文件夹中执行此操作时,它非常有效:

FOR %a in (*.jpg) DO convert %a -thumbnail 30% small_%a

为了循环遍历子文件夹,只需要添加 /R 标志即可:
FOR /R %a in (*.jpg) DO convert %a -thumbnail 30% small_%a

这将导致缩略图的新名称为small_c:\images\image.jpg,这是不正确的 :)

当在脚本中遍历子文件夹时,我如何在文件名中得到前缀small_,例如从c:\images\image.jpgc:\images\small_image.jpg ?

谢谢。

1个回答

18

我认为这可能适合你的情况。

for /R %i in (*.jpg) DO convert %i -thumbnail 30% %~di%~pi%~ni_small%~xi

1
我将在文件名前面使用 small_:for /R %i in (*.jpg) DO convert %i -thumbnail 30% %di%pismall_%ni%xi - Andrija
2
无论如何,这对我都不起作用,直到我在手册http://ss64.com/nt/for.html中找到正确的语法是双重%,例如:for /R %%i in (*.jpg) DO convert %%i... - Peter Perháč
1
%仅在批处理文件中运行命令时才是必需的。如果在命令提示符下运行for循环,则只需要一个单独的% - naitsirhc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接