Board logo

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

作者: 228630386    时间: 2015-6-26 21:50     标题: [已解决]批处理如何将多个子目录下图片都添加标记?ExifTool

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

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

图片都需要添加标记为“”花花“”
作者: 228630386    时间: 2015-6-26 22:56

是不是表达得不够详细呢?还是没有方法可以解决?
作者: tigerpower    时间: 2015-7-2 12:56

本帖最后由 tigerpower 于 2015-7-4 06:02 编辑
  1. for /f "tokens=*" %i in ('dir /a-d /s /b *.jpg') do ren "%i" "花花%~nxi"
复制代码

作者: 228630386    时间: 2015-7-2 21:31

回复 3# tigerpower


能直接运行命令就能实现添加标记么?
作者: 228630386    时间: 2015-7-6 00:06

回复 5# tigerpower


    不行喔, 运行命令后也没添加上标记喔?
作者: tigerpower    时间: 2015-7-6 16:01

什么“标记”,贴图上来。
作者: 228630386    时间: 2015-7-6 22:59

回复 7# tigerpower


    你好,已贴上图片
作者: CrLf    时间: 2015-7-6 23:39

找了下,只有读取标记的方法,不知道改写标记的接口在哪里
作者: 228630386    时间: 2015-7-7 00:10

回复 9# CrLf

是喔,我百度了好久都没找到方法,现在都是手动去添加,或者用BR去添加。
作者: tigerpower    时间: 2015-7-7 17:17

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

BR是啥,貌似全部选中后在属性里就能批量改,我写了一个批处理,试试吧
  1. @echo off
  2. rem 批量添加标记
  3. rem 用法:将图片目录拖放到批处理文件图标上
  4. rem 下载exiv2:http://www.exiv2.org/exiv2-0.25-win.zip
  5. rem 复制 exiv2.exe libexpat.dll 到 C:\Windows\system32(或设置路径,见下)
  6. rem set 设置, add 增加, del 删除, 可以连用多个 -M 选项
  7. chcp 936
  8. rem path %ProgramFiles(x86)%\exiv2;%PATH%
  9. set tag=花花
  10. pushd "%~f1" || echo 目录不存在 && goto :eof
  11. echo %cd%
  12. for /f "tokens=*" %%i in ('dir /a-d /s /b *.jpg') do exiv2 -M"add Iptc.Application2.Keywords %tag%" "%%i"
  13. popd
  14. echo 修改完毕。
  15. pause
复制代码

作者: CrLf    时间: 2015-7-7 17:32

回复 11# tigerpower


    Br=Bridge
作者: CrLf    时间: 2015-7-7 17:55

回复 11# tigerpower


    这都能找到,太强了,不过实测得把 chcp 65001 去掉才行,或者放到 popd 之后
作者: 228630386    时间: 2015-7-7 21:57

回复 11# tigerpower


    亲,好像有点复杂,是要一步步按照着来做么?
作者: 228630386    时间: 2015-7-7 22:06

回复 11# tigerpower


    是要下载第三软件么?哪网址打开不了的。
作者: tigerpower    时间: 2015-7-7 23:33

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

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

我已经简化了代码

回复 14# 228630386
建议找图片软件。
作者: 228630386    时间: 2015-7-7 23:37

回复 16# tigerpower

能详细解释一下么?
作者: CrLf    时间: 2015-7-7 23:53

回复 15# 228630386


    http://www.bathome.net/s/tool/?key=exiv2
点击版本号即可下载
作者: pcl_test    时间: 2015-7-7 23:53

本帖最后由 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);
复制代码

作者: 228630386    时间: 2015-7-8 00:00

回复 19# pcl_test


    原来真的要利用第三分软件才可以,标记的速度也非常快。
作者: 228630386    时间: 2015-7-8 00:44

回复 19# pcl_test


    亲,有将DOS命令打包的教程么?之前百度过有的,现在又找不到了。
作者: tmplinshi    时间: 2015-7-8 01:26

方法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
复制代码

工具下载地址:

作者: 228630386    时间: 2015-7-8 11:33

回复 19# pcl_test


    亲,能教我一下怎样把三个命令一起打包成一下么?因为很久之前你帮我弄过。
作者: WHY    时间: 2015-7-19 17:24

都是高手啊,学习了
作者: 228630386    时间: 2015-7-20 00:34

回复 23# pcl_test


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

回复 23# pcl_test


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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2