我正在使用 ImageMagick 创建照片的缩略图。

我正在使用 Windows 操作系统。

我的源文件包含在许多子文件夹中。

我希望通过保存到不同驱动器上的目标文件夹来制作源文件的缩略图,同时保留相同的文件夹结构并修改原始文件名。

目标文件名与源文件名相同,但修改了 1 个字符:

源示例:

c:\images\1\1L0000021.jpg
c:\images\1\1L000561.jpg
c:\images\2\234L0000032.jpg
c:\images\3\31214L000001.jpg

到目的地驱动器:
d:\images\1\1M0000021.jpg
d:\images\1\1M000561.jpg
d:\images\2\234M0000032.jpg
d:\images\3\31214M000001.jpg

注:L 改为 M 只需一个字母

源文件名模式始终为:*l*.jpg
这是我要运行以进行图像处理的命令:
convert -thumbnail 200x220^^ -gravity center -extent 200x200 -quality 80 c:\images\*.jpeg d:\images\output.jpeg

上面的命令从源文件夹创建所需的缩略图并保存到目标文件夹,但输出文件名不正确,并且不会遍历子文件夹。

问题:

1)如何遍历每个文件夹和子文件夹,然后输出到目标驱动器上完全相同的结构(如果文件夹不存在,则创建文件夹)

2)如何修改输出文件名,使*l*.jpeg变成*m*.jpeg

最佳答案

1) 这是将文件夹树从 C:\source 复制到 X:\dest 的方式:

for /r C:\source %I in (.) do @md "X:\dest%~pnxI"

这个 for 循环的作用是遍历一个文件夹树,从 C:\source 开始,每个文件夹名称都在变量 %I 中。命令“md”是“mkdir”的缩写。修饰符 "~pnx"去除原始驱动器号,以便可以添加 X:\dest。
请注意,“X:\dest”之后没有反斜杠,因为原始路径的第一个反斜杠被保留。

2) 使用相同的命令运行 Imagick 命令来处理您的 JPEG 文件:
for /r C:\source %I in (.) do @convert -options %I "X:\dest%~pnxI"

目标名称相同。
3) 使用 Naru ( http://hp.vector.co.jp/authors/VA014830/english/FlexRena/ ) 的 FlexibleRenamer 工具重命名目标树中的所有 JPEG。它可以使用正则表达式来选择和修改名称。
你会重命名
"(\d+)L(.+)"


"\1M\2"

意思是:至少一位小数,后跟文字“L”,后跟至少一个字符。该名称由第一部分、文字“M”和第二部分替换。

编辑:
处理步骤 2) 需要一个文件选择器才能工作,如下所示:
for /r C:\source %I in (*.jpg) do @convert -options %I "X:\dest%~pnxI"

否则,仅处理文件夹名称 - 根据“转换”程序的不同,这可能满足也可能不够。

关于image-processing - ImageMagick 缩略图 Windows 上的批处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17807765/

10-10 23:36
查看更多