for循环通过windows cmd中的文件夹循环以进行文件重命名

And*_*ija 6 recursion command-line rename image windows-scripting

我正在尝试使用ImageMagic迭代带有图像的文件夹以创建缩略图,并使用small_前缀重命名缩略图文件.

当我在单个文件夹中执行它时,它工作得很好:

FOR %a in (*.jpg) DO convert %a -thumbnail 30% small_%a
Run Code Online (Sandbox Code Playgroud)

要遍历子文件夹,我只需要/ R标志:

FOR /R %a in (*.jpg) DO convert %a -thumbnail 30% small_%a
Run Code Online (Sandbox Code Playgroud)

这将导致缩略图的新名称 small_c:\images\image.jpg错误:)

如何small_在脚本中通过子文件夹递归时获取前缀到文件名,即从?c:\images\image.jpgc:\images\small_image.jpg

谢谢.

ren*_*ick 13

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

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

  • 无论如何,这对我不起作用,直到我在手册 http://ss64.com/nt/for.html 中发现正确的语法是 double-%,例如:for /R %%i in (*. jpg) 一定要转换 %%i... (2认同)
  • 仅当在批处理文件中运行命令时才需要双“%”。如果在命令提示符下运行“for”循环,则只需要一个“%”。 (2认同)