[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何将多个子目录下图片都添加标记?ExifTool

真心感谢各位的帮忙,帮我解决到工作上的难题!

如何将多个子目录下图片都添加标记?图片格式为.jpg   因为图片比较多,每次都需要搜索出来手动添加的话会比较麻烦。
可否用DOS命令实现呢?

图片都需要添加标记为“”花花“”
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 23# pcl_test


    不好意思,原来可以了,是我刚输入有误。
    这个批处理添加标记的命令比之前的快很多,能否实现运行后直接添加指定标定,然后不弹出窗口?

TOP

回复 23# pcl_test


     打包已学全,非常感谢!!
     你是否重新改过命令呢?运行后时会弹出一个窗口。然后我输入了add,然后说修改完毕,再有一句话,然后也标记不了。

TOP

都是高手啊,学习了

TOP

回复 19# pcl_test


    亲,能教我一下怎样把三个命令一起打包成一下么?因为很久之前你帮我弄过。

TOP

方法1: 批处理文件保存为 UTF-8 (不含 BOM)
  1. exiftool -overwrite_original "-XPKeywords=测试标记" *.jpg
复制代码
方法2: 不需要修改批处理文件编码,从文本中读取文字,文本需保存为 UTF-8 (有无 BOM 都可以)
  1. exiftool -overwrite_original "-XPKeywords<=标记.txt" *.jpg
复制代码
方法3: 不需要手工设置编码,用 win_iconv 自动转换为 UTF-8
  1. @echo off
  2. set Keywords=测试标记
  3. echo %Keywords% | win_iconv -f gbk -t utf-8 > 标记.txt
  4. exiftool -overwrite_original "-XPKeywords<=标记.txt" *.jpg
  5. pause
复制代码
方法3.1: 不需要手工设置编码,用 win_iconv 自动转换为 UTF-8,通过管道符传递
  1. @echo off
  2. set Keywords=测试标记
  3. echo %Keywords% | win_iconv -f gbk -t utf-8 | exiftool -overwrite_original "-XPKeywords<=-" *.jpg
  4. pause
复制代码
包括子目录示例代码:
  1. @echo off
  2. set Keywords=花花
  3. set jpg目录="d:\test"
  4. echo %Keywords% ^
  5.     | win_iconv -f gbk -t utf-8 ^
  6.     | exiftool -overwrite_original "-XPKeywords<=-" -r -ext .jpg -ext .jpeg %jpg目录%
  7. pause
复制代码

工具下载地址:
1

评分人数

    • CrLf: exiftool技术 + 1

TOP

回复 19# pcl_test


    亲,有将DOS命令打包的教程么?之前百度过有的,现在又找不到了。

TOP

回复 19# pcl_test


    原来真的要利用第三分软件才可以,标记的速度也非常快。

TOP

本帖最后由 pcl_test 于 2016-12-25 14:54 编辑

直接保存为bat,跟exiv2放在一起运行即可
exiv2下载http://www.bathome.net/s/tool/index.html?key=exiv2
  1. 1>1/* :
  2. @echo off& setlocal enabledelayedexpansion
  3. ::设置标记
  4. set "tab=花花"
  5. echo;%tab%|cscript -nologo -e:jscript "%~0"
  6. ::/s处理当前目录及其子目录的图片,去掉则只处理当前目录的图片
  7. for /f "delims=" %%a in ('dir /a-d /s /b *.jpg') do exiv2 -m $tab.txt "%%a"
  8. del $tab.txt
  9. echo;标记完成&ping -n 2 0 >nul&exit/b
  10. */
  11. //测试了下,exiv2 脚本文件需是无BOM的UTF-8编码
  12. var tab = WScript.StdIn.ReadLine();
  13. var strCharset = "utf-8";
  14. var stm1 = new ActiveXObject('ADODB.Stream');
  15. stm1.Mode = 3;
  16. stm1.Type = 2;
  17. stm1.Charset = strCharset;
  18. stm1.Open();
  19. stm1.WriteText("set Xmp.dc.subject "+tab);
  20. stm1.Position = 3;
  21. var stm2 = new ActiveXObject('ADODB.Stream');
  22. stm2.Mode = 3;
  23. stm2.Type = 1;
  24. stm2.Open();
  25. stm1.CopyTo(stm2);
  26. stm2.SaveToFile("$tab.txt",2);
复制代码
1

评分人数

TOP

回复 15# 228630386


    http://www.bathome.net/s/tool/?key=exiv2
点击版本号即可下载

TOP

回复 16# tigerpower

能详细解释一下么?

TOP

本帖最后由 tigerpower 于 2015-7-8 14:04 编辑

回复 13# CrLf
实测得把 chcp 65001 去掉才行,或者放到 popd 之后

我已经简化了代码

回复 14# 228630386
建议找图片软件。

TOP

回复 11# tigerpower


    是要下载第三软件么?哪网址打开不了的。

TOP

回复 11# tigerpower


    亲,好像有点复杂,是要一步步按照着来做么?

TOP

回复 11# tigerpower


    这都能找到,太强了,不过实测得把 chcp 65001 去掉才行,或者放到 popd 之后

TOP

返回列表