找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19884|回复: 9

[文件操作] [已解决]jhead如何实现批量导出EXIF信息到另一些文件里

[复制链接]
发表于 2010-8-10 12:57:40 | 显示全部楼层 |阅读模式
如果不知道JHEAD,请看NAMEJM 的帖子。

jhead:获取及修改照片exif信息的好工具 ---by namejm
http://bbs.bathome.net/thread-4566-1-1.html

批处理版照片整理器[2008-10-12]   ---by namejm
http://bbs.bathome.net/thread-69-1-1.html

问题产生背景:
有时候数码相机拍出的照片太大了,4000*3000的竟然达到单个文件4.*M。

刚好,偶然间发现了一个图片压缩工具,OptimumJPEG.
老外写的免费软件,使用简单,压缩率极高而又不损失质量。

可是,美中不足的是,它在极高压缩的同时,删除了原来文件的 EXIF 信息。

这个时候,发现了 JHEAD。(我也是因此而发现 BATHOME 的)。

但是,JHEAD 好像没有办法实现 从TXT 文件中导入 EXIF 到图片(好像只能导入COMMENT。JHEAD使用没有深入研究,错误之处,高手指正。)。
但是,它可以把一个图片中的 EXIF 信息导入到另一个文件中去。

于是,产生了如下想法(CODE实现目的):

我可以把原来图片备份一份,然后再优化压缩。
压缩完毕,把原来文件的 EXIF 导入到优化好的文件中。

我用 for 语句,如下:
  1. for %%i in (*.jpg) do jhead -te %%i 1/%%i
  2. :: 假设JHEAD就在当前目录,批处理文件与JPG文件也是在同一个目录。
  3. :: 文件夹1为当前目录的一个子目录,里面的文件就是优化过的文件,优化前后文件同名。
复制代码
结果提示:No such file.
in file .....jpg

不知道错在哪里?

如果我的思路不可取,那么
这个功能该如何实现。

请高手不吝指教。

————————————————————————————————
谢谢各位的提示,现在问题已经解决。

事实证明,以下代码是对的。
  1. for %%i in (*.jpg) do jhead -te %%i 1\%%i

  2. ::for %%i in (*.jpg) do jhead -te %%i 1/%%i 也可以,不知道为什么这里 "/" 与 ""没区别。高手指教。
复制代码
————————————————————————————————
对于5楼提供的软件 RIOT,下载了。
试用后,在压缩率都为 50% 的情况下,RIOT 压缩过的PP比我用 OPTIMUMJPEG (默认设置下)压缩的PP好像 还小10-20k。

且,即便是在保持EXIF信息的情况下,保留了EXIF信息的文件也只是比没有保留的文件大了7-10K。
而,用OPTIMUMJPEG优化,然后从原文件导入EXIF到优化过的文件,导入EXIF后,文件平均要大了20-40K。


所以,对RIOT很是佩服,推荐使用。不过就是设置稍有点麻烦,尤其是E文不好的朋友。

【文章中出现的软件下载URL】

OptimumJPEG V1.1.0.3
Referral URL: http://www.theorica.net/download.htm
Download URL: http://www.theorica.net/download/OptimumJPEG.zip

Jhead V2.9.0 (5 Feb, 2010)
Referral URL: http://www.sentex.ca/~mwandel/jhead/
Download URL: http://www.sentex.ca/~mwandel/jhead/jhead.exe

Riot Latest version (0.4.1) – 24.05.2010
Referral URL: http://luci.criosweb.ro/riot/download/
Download URL: http://download.criosweb.ro/download.php?sid=R (不支持工具下?反正也不大)

希望以上小的软件能解决大家在实际应用中碰到的和我类似的问题。

[ 本帖最后由 devil2001 于 2010-8-11 12:52 编辑 ]
 楼主| 发表于 2010-8-10 13:31:38 | 显示全部楼层
没有人在吗?
不知道这个工具的,能不能就FOR语句指点下啊:
FOR 语句中变量究竟可不可以这样用啊。
发表于 2010-8-10 16:53:42 | 显示全部楼层

如果文件名有空格,要用双引号括起来

  1. for %%i in (*.jpg) do jhead -te "%%i" "1\%%i"
复制代码

[ 本帖最后由 a6c123 于 2010-8-10 16:55 编辑 ]
 楼主| 发表于 2010-8-10 17:12:35 | 显示全部楼层
文件名没有空格,我也尝试过加上双引号,不过还是提示找不到文件!不知道是不是jhead 不支持还是什么别的!
发表于 2010-8-10 17:59:35 | 显示全部楼层
斜杠反了吧?最好用绝对路径试试.没用过jhead不清楚
发表于 2010-8-10 18:18:32 | 显示全部楼层

试试另一个图片压缩工具:

RIOT
http://download.criosweb.ro/download.php?sid=R

在 ”Metadata“ 里可以选择保留 EXIF

[ 本帖最后由 a6c123 于 2010-8-10 18:22 编辑 ]
 楼主| 发表于 2010-8-10 21:59:14 | 显示全部楼层
谢谢楼上,有空比较下,如果压缩比率相差不大,而且还能选择保留EXIF信息的话,那就用这个好了…
不过大家如果不考虑保留照片信息的话,我还是给大家推荐我用的这个工具!真是太好用了。
 楼主| 发表于 2010-8-11 11:16:18 | 显示全部楼层
困惑中……不知道怎么回事。
看了大家的帖子,回去自己又尝试了以下,结果又好了。
完美实现自己的目的。

谢谢大家对本帖的支持。
具体解决办法看顶楼。
 楼主| 发表于 2010-8-11 11:17:20 | 显示全部楼层
原帖由 a6c123 于 2010-8-10 16:53 发表
for %%i in (*.jpg) do jhead -te "%%i" "1\%%i"


好像你的斜杠是不是反了。
我用的 1/%%i
运行通过。

错误:
后来经过我的验证,
  1. for %%i in (*.jpg) do jhead -te %%i 1/%%i

  2. for %%i in (*.jpg) do jhead -te %%i 1\%%i
复制代码


两句都是可以的。
不知道for 中,路径 "/" 与"\"是不是没有区别。
(应该是有区别的,不知道为什么这里都可以,且结果无区别。)
高手指教。

[ 本帖最后由 devil2001 于 2010-8-11 12:20 编辑 ]
发表于 2010-8-11 12:34:49 | 显示全部楼层

回复 9楼 的帖子

XP SP2 系统下可行:
  1. if exist c://///////windows\\\\\\\\\system32////////\\\\\\\\\cmd.exe echo 存在
复制代码

[ 本帖最后由 a6c123 于 2010-8-11 12:36 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:56 , Processed in 0.028655 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表