标题: [文件操作] [已解决]批处理如何将多个子目录下图片都添加标记?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 编辑
- 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是啥,貌似全部选中后在属性里就能批量改,我写了一个批处理,试试吧- @echo off
- rem 批量添加标记
- rem 用法:将图片目录拖放到批处理文件图标上
- rem 下载exiv2:http://www.exiv2.org/exiv2-0.25-win.zip
- rem 复制 exiv2.exe libexpat.dll 到 C:\Windows\system32(或设置路径,见下)
- rem set 设置, add 增加, del 删除, 可以连用多个 -M 选项
-
- chcp 936
- rem path %ProgramFiles(x86)%\exiv2;%PATH%
- set tag=花花
-
- pushd "%~f1" || echo 目录不存在 && goto :eof
- echo %cd%
- for /f "tokens=*" %%i in ('dir /a-d /s /b *.jpg') do exiv2 -M"add Iptc.Application2.Keywords %tag%" "%%i"
- popd
- echo 修改完毕。
- 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/* :
- @echo off& setlocal enabledelayedexpansion
- ::设置标记
- set "tab=花花"
- echo;%tab%|cscript -nologo -e:jscript "%~0"
- ::/s处理当前目录及其子目录的图片,去掉则只处理当前目录的图片
- for /f "delims=" %%a in ('dir /a-d /s /b *.jpg') do exiv2 -m $tab.txt "%%a"
- del $tab.txt
- echo;标记完成&ping -n 2 0 >nul&exit/b
- */
-
- //测试了下,exiv2 脚本文件需是无BOM的UTF-8编码
- var tab = WScript.StdIn.ReadLine();
- var strCharset = "utf-8";
- var stm1 = new ActiveXObject('ADODB.Stream');
- stm1.Mode = 3;
- stm1.Type = 2;
- stm1.Charset = strCharset;
- stm1.Open();
- stm1.WriteText("set Xmp.dc.subject "+tab);
- stm1.Position = 3;
- var stm2 = new ActiveXObject('ADODB.Stream');
- stm2.Mode = 3;
- stm2.Type = 1;
- stm2.Open();
- stm1.CopyTo(stm2);
- 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)- exiftool -overwrite_original "-XPKeywords=测试标记" *.jpg
复制代码
方法2: 不需要修改批处理文件编码,从文本中读取文字,文本需保存为 UTF-8 (有无 BOM 都可以)- exiftool -overwrite_original "-XPKeywords<=标记.txt" *.jpg
复制代码
方法3: 不需要手工设置编码,用 win_iconv 自动转换为 UTF-8- @echo off
- set Keywords=测试标记
- echo %Keywords% | win_iconv -f gbk -t utf-8 > 标记.txt
- exiftool -overwrite_original "-XPKeywords<=标记.txt" *.jpg
- pause
复制代码
方法3.1: 不需要手工设置编码,用 win_iconv 自动转换为 UTF-8,通过管道符传递- @echo off
- set Keywords=测试标记
- echo %Keywords% | win_iconv -f gbk -t utf-8 | exiftool -overwrite_original "-XPKeywords<=-" *.jpg
- pause
复制代码
包括子目录示例代码:- @echo off
- set Keywords=花花
- set jpg目录="d:\test"
- echo %Keywords% ^
- | win_iconv -f gbk -t utf-8 ^
- | exiftool -overwrite_original "-XPKeywords<=-" -r -ext .jpg -ext .jpeg %jpg目录%
- 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 |