Windows批量添加后缀到当前文件夹的EXIF值的文件名中,并使用FOR循环。

问题描述 投票:0回答:1

我正试图将一些EXIF数据添加到文件夹中的文件名中。 到目前为止,我已经能够让较小的部分工作,但我不能让名称和扩展名分开,以便可以通过FOR循环与EXIF值相结合。

我看到我需要使用 ! 来划定循环中的变量,但我无法让这个方法与文件名一起工作。

SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=* delims=" %%a in ('dir /b *') do (
    set file=%%~a
    set _fname=%~n1
    set _ext=%~x1
    for /f %%i in ('exiftool.exe -s -S -SourceImageWidth %file%') do set WIDTH=%%i
    for /f %%i in ('exiftool.exe -s -S -SourceImageHeight %file%') do set HEIGHT=%%i
    for /f %%i in ('exiftool.exe -s -S -CompressorID %file%') do set CODEC=%%i
    rename %file% "%_fname% [%WIDTH%x%HEIGHT% %CODEC%]%_ext%"
)

过程是:得到文件名->只得到名字->得到扩展名->得到EXIF值->重命名文件,将值加到名字上并重用扩展名->在当前目录下的下一个文件上重复执行。

我为草率的批量语法道歉,因为我相信有更优化的编码方式。

谢谢你!我正试图将一些EXIF数据添加到文件夹中的文件名中。

windows for-loop batch-rename exiftool
1个回答
0
投票

你正在做 Exiftool常见错误#3. Exiftool最大的性能打击就是它的启动时间,像这样循环使用会耗费相当长的时间,尤其是exiftool本身就有非常强大的批处理和重命名能力。

试着用单个命令来做这个 exiftool "-Filename<%f [${SourceImageWidth}x$SourceImageHeight $CompressorID].%e" /path/to/files

添加 -r 来递归到子目录中。 记住 双百 如果在.BAT文件中使用。

%f token 代表不含扩展名的基本文件名。标签名称是通过在它们前面添加一个美元符号来插入的。 因为 SourceImageWidth 紧挨着 x大括号用来分隔两者,这样exiftool就不会去寻找一个名为 "SourceImageWidthx "的标签。 的标签。%e 代表文件扩展名。

© www.soinside.com 2019 - 2024. All rights reserved.