【问题标题】:Exiftool via batch file: redirecting output to original consoleExiftool 通过批处理文件:将输出重定向到原始控制台
【发布时间】:2020-06-22 01:15:28
【问题描述】:

我正在尝试从 webp 图像中获取尺寸宽度/高度,通过批处理文件使用 exiftool 并将这些值保存为变量。我可以让 bat 文件输出尺寸(在此示例中,它在 exiftool 窗口中输出“400x222”),但是我不太确定如何将这些值成功地重定向回 bat 文件控制台窗口中作为变量。

下面的代码给了我我想要的,但是在 exiftool 窗口中:

@echo off
setlocal EnableDelayedExpansion
echo ===============     WEBP EXIF    ===============
echo.

for %%f in ("C:\ffmpegConvert\*.webp") do (

    exiftool -k -s -s -s -ImageSize %%f

)

endlocal
pause
exit

以下是我尝试过的,但我无法在我的初始 bat 文件控制台窗口中回显这些值(我得到“回显关闭,每次失败回显一次”)

@echo off
setlocal EnableDelayedExpansion
echo ===============     WEBP EXIF    ===============
echo.

for %%f in ("C:\ffmpegConvert\*.webp") do (

    for /f "tokens=1,2 delims=x" %%a in ('exiftool -s -s -s -ImageSize %%f') do (
        set sW=%%a 
        set sH=%%b
    )
    @echo !sW! >CON:
    @echo !sH! >CON:
)

endlocal
pause
exit

【问题讨论】:

  • 此处无法复制。您应该在exiftool 命令行上将%%f 替换为"%%~f",以涵盖带有空格的路径的情况,但除此之外它对我有用。
  • @GeneralKnox 在第二个批处理文件中exiftool 选项-k 发生了什么?为什么-s 指定了三次?你看,我没有安装exiftool 也没有阅读它的文档。可能是 exiftool 输出数据来处理 STDERR 而不是 STDOUT ,因此需要 'exiftool.exe -k -s -s -s -ImageSize "%%f" 2^>^&1' 来获得正确捕获的输出并由内部 for 处理.我建议阅读this answer 中的issue 7 并使用IJ(和K)作为循环变量,而不是fa(和b) )。
  • 好的,谢谢大家,我也做了您建议的更改(dixv + Mofi)。我为您的链接添加了书签 Mofi,谢谢!我真的很喜欢学习一般的脚本,非常有趣!
  • @Mofi -s 被列出三遍的原因是它只打印标签的值,而没有任何额外的数据,例如标签名称。也可以将其列为-s3 以达到相同的效果。请参阅-s (-short) option 上的文档。

标签: batch-file exiftool


【解决方案1】:

好的,所以在查看了您的所有反馈并进行了一些额外的谷歌搜索后,我注意到我在 c:\Windows 中的 exiftool.exe 已在其属性中检查了“以管理员身份运行”。取消勾选这个选项现在会返回我原来的控制台中的变量......可以肯定的是,我重新检查了它,它又回到了没有正确显示信息的状态。我不明白为什么会这样,但现在它可以按我的意愿工作了:)再次感谢您的回复!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 2021-10-21
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多