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

[文件管理] 批处理版照片整理器[2008-10-12]



____________________________版主提醒____________________________

  为了避免影响技术讨论、提高看帖的舒适性,请大家不要在此帖下跟
无实质内容的口水帖,特别是纯顶、纯支持、纯感谢、路过之类的帖子,
管理人员将不定期清理此类回帖,请大家多参与讨论少灌水,与人方便,
终将给自己带来方便,谢谢合作。
________________________________________________________________



  最近相机里的照片比较多,一般是连拍了好几天之后,才把相机里的照片一股脑放到硬盘里,并且是隔上一两个星期才整理一次。日子一长,照片就多了起来,都分不清是什么时候拍的了。网上搜索了很久,找到一款名为PhotosTool的软件,可以按拍摄日期来整理照片,正合我意,只可惜,这个不到1M的小软件,居然要另外安装20余M的.NET 2.0,一气之下,用P写了一个类似功能的脚本,发出来大家玩玩。

  曾经有一段时间,单位资料室的电脑中毒很深,保存有数十G工作照片的分区也惨遭毒手——那可是我们单位几年工作的心血啊!资料室的人不敢轻举妄动,请了数据恢复公司的人把系统重装,把数据恢复到了移动硬盘上,结果,照片目录和修改日期全部错乱,对比较依靠照片修改日期来整理照片的我们而言,这无疑是一个沉重的打击。幸好有部分照片做了备份,而绝大部分的照片大致拍摄日期都有文字记录,资料室不得不动用最原始的方式,集中了一些人手,把照片一张一张点开,通过ACDSee查看exif信息里的拍摄日期来重新归类。如此整理了数月,才基本把照片放回正确的文件夹,但是,照片的修改日期仍然没法修正。本人翻遍网络,终于觅到一款能通过读取照片exif信息来对照片进行修改操作的命令行程序。经过本机的数十次测试,通过此命令行程序,完全可以把错乱的日期修改为照片的拍摄日期,于是,就有了照片整理器1.3版及其后续版本,具体功能可以查看脚本说明及更新历史。

  经过将近1年时间的逐步完善,目前,此工具已经具备了按照片exif信息中的拍摄时间或者像素大小整理照片的功能,并可以把照片的修改时间改为照片的拍摄时间,方便后续整理工作,强烈推荐使用。

  功能演示:

  注意:必须与附件中的 jhead.exe 一起使用。
  1. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2. :: 作者: namejm
  3. :: 出处: bbs.bathome.net
  4. :: 编写日期: 2007-10-29~2008-10-12
  5. :: 测试环境: CMD@WinXP SP2
  6. :: 功能:按照exif信息归类照片
  7. :: 详细介绍:
  8. ::   本脚本通过获取jpg或jpeg照片的exif信息归类图片,具备按照分辨率大小和
  9. :: 日期两种方式归类,并自动重命名同名文件,同时统计已经处理的照片数量。另外,
  10. :: 可以选择使用如下功能:
  11. ::   1、批量修正当前目录下及所有子目录中jpg或jpeg照片的修改日期为拍摄日期;
  12. ::   2、能把所有子目录里的图片移动到父目录下并删除父目录下的所有空目录。
  13. :: 注意:
  14. ::   本脚本会读取照片的exif信息,在按日期整理照片时,自动修正照片的修改时间
  15. :: 为照片的拍摄时间,时间精确到秒;没有exif信息的jpg或jpeg图片,修改时间保持
  16. :: 不变,此时,按照像素大小整理照片的功能不可正常使用,按照日期归类照片时依据
  17. :: 的是照片的最后修改日期。
  18. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  19. @echo off
  20. mode con lines=30
  21. set TT=照片整理器1.4
  22. color 1f
  23. :source
  24. title %TT%     当前目录:"%cd%"
  25. cls
  26. echo                             ╭─────────╮
  27. echo           ╭────────┤选择要整理的文件夹├─────────╮
  28. echo           │                ╰─────────╯                  │
  29. echo           │                                                        │
  30. echo           │         本程序能把指定路径下的jpg格式照片按照分辨率    │
  31. echo           │                                                        │
  32. echo           │    大小或者拍摄日期整理到如下格式的文件夹中:          │
  33. echo           │                                                        │
  34. echo           │        1 分辨率大小 (如 800×600)                    │
  35. echo           │                                                        │
  36. echo           │      2 年-月-日(如 2007-01-01)                     │
  37. echo           │                                                        │
  38. echo           │        3 月\日期(如 01\2007-01-01)                   │
  39. echo           │                                                        │
  40. echo           │        4 年\日期(如 2007\2007-01-01)                 │
  41. echo           │                                                        │
  42. echo           │        5 年\月\日期 (如 2007\01\2007-01-01)          │
  43. echo           │                                                        │
  44. echo           │      注意:本脚本在按照日期归类照片时,会自动修正    │
  45. echo           │                                                        │
  46. echo           │    照片的创建时间为照片exif信息中的拍摄时间,精确到    │
  47. echo           │                                                        │
  48. echo           │    秒。没有exif信息的jpg图片,修改时间保持不变。       │
  49. echo           │                                                        │
  50. echo           ╰────────────────────────────╯
  51. echo.
  52. echo            处理当前目录请直接回车                          退出请按 0
  53. echo           ──────────────────────────────
  54. set Source=
  55. set /p Source=              请把要处理的文件夹拖曳到本窗口:
  56. if not defined Source set "Source=%cd%"
  57. set "Source=%Source:"=%"
  58. if "%Source%"=="0" exit
  59. if not exist "%Source%\" goto source
  60. echo "%Source%"|find ":">nul 2>nul||set "Source=%cd%\%Source%"
  61. title %TT%     正在处理目录:"%Source:"=%"
  62. :fixtime
  63. cls
  64. echo                             ╭─────────╮
  65. echo           ╭────────┤修正照片的修改日期├─────────╮
  66. echo           │                ╰─────────╯                  │
  67. echo           │                                                        │
  68. echo           │         照片的拍摄时间包含在exif信息中,反映在原始     │
  69. echo           │                                                        │
  70. echo           │    照片文件中,就是照片的修改时间。                    │
  71. echo           │                                                        │
  72. echo           │      很不幸的是,照片的修改时间有时候并不是和exif    │
  73. echo           │                                                        │
  74. echo           │    信息中的拍摄时间完全吻合,比如:照片被编辑后、数    │
  75. echo           │                                                        │
  76. echo           │    据恢复后等等,从而导致在查看照片的修改时间时,难    │
  77. echo           │                                                        │
  78. echo           │    以判定照片的拍摄时间,在一些需要按照拍摄时间把资    │
  79. echo           │                                                        │
  80. echo           │    料归档的场合,这样的情形无疑是一种灾难。            │
  81. echo           │                                                        │
  82. echo           │      本功能可以把指定目录及其所有子目录下的照片修    │
  83. echo           │                                                        │
  84. echo           │    改时间重新设置为照片的拍摄时间——只要照片的exif    │
  85. echo           │                                                        │
  86. echo           │    信息没有被破坏掉。                                  │
  87. echo           │                                                        │
  88. echo           ╰────────────────────────────╯
  89. echo.
  90. echo            返回上一步请按 1                               退出请按 0
  91. echo           ──────────────────────────────
  92. set FixTime=
  93. set /p FixTime=            是否修正照片的修改时间为拍摄时间(是=Y 否=其他任意键):
  94. if not defined FixTime goto movesub
  95. set "FixTime=%FixTime:"=%"
  96. if "%FixTime%"=="0" exit
  97. if "%FixTime%"=="1" goto source
  98. if /i "%FixTime%"=="y" (
  99.     jhead -ft "%Source%\*.jp*g">nul 2>nul
  100.     for /f "delims=" %%i in ('dir /ad /b /s "%Source%" 2^>nul') do (
  101.         jhead -ft "%%i\*.jp*g">nul 2>nul
  102.         title %TT%     正在处理目录:"%%i"
  103.     )
  104. )
  105. :movesub
  106. cls
  107. echo.&echo.&echo.
  108. echo                             ╭─────────╮
  109. echo           ╭────────┤   预处理子目录   ├─────────╮
  110. echo           │                ╰─────────╯                  │
  111. echo           │                                                        │
  112. echo           │         如果当前目录的子目录中存在照片,而你需要把     │
  113. echo           │                                                        │
  114. echo           │    它们都放到父目录下,并删除父目录及其所有子目录下    │
  115. echo           │                                                        │
  116. echo           │    的空文件夹,那么,这个功能将是非常有用的。          │
  117. echo           │                                                        │
  118. echo           │      注意:此处的空文件夹是指删除父目录及其所有子    │
  119. echo           │                                                        │
  120. echo           │    目录下的Thumbs.db和*.ctg文件后形成的空文件夹,以    │
  121. echo           │                                                        │
  122. echo           │    及原本就存在的空文件夹。                            │
  123. echo           │                                                        │
  124. echo           ╰────────────────────────────╯
  125. echo.
  126. echo            返回上一步请按 1                                退出请按 0
  127. echo           ──────────────────────────────
  128. echo.
  129. set MoveSub=
  130. set /p MoveSub=            是否把照片移动到父目录下并删除空目录(是=Y 否=N):
  131. if not defined MoveSub goto movesub
  132. set "MoveSub=%MoveSub:"=%"
  133. if not defined MoveSub goto movesub
  134. if "%MoveSub%"=="0" exit
  135. if "%MoveSub%"=="1" goto source
  136. if /i "%MoveSub%"=="y" (
  137.     set num=0
  138.     set WhetherMove=M
  139.     for /f "delims=" %%i in ('dir /ad /b /s "%Source%\" 2^>nul') do (
  140.         for /f "delims=" %%j in ('dir /a-d /b /s "%%i\*.jp*g" 2^>nul') do (
  141.             set route=&set postfix=
  142.             setlocal enabledelayedexpansion
  143.             call :re_name "%%j" "%Source%" "%%~nj" "%%~xj"
  144.             move "%%j" "!Destination_1!">nul 2>nul
  145.             endlocal
  146.             set /a num+=1
  147.         )
  148.         title %TT%     正在处理文件:"%%i"
  149.     )
  150.     del /a /f /q /s "%Source%\Thumbs.db">nul 2>nul
  151.     del /a /f /q /s "%Source%\*.ctg">nul 2>nul
  152.     for /f "delims=" %%i in ('dir /ad /b /s "%Source%\"^|sort /r') do (
  153.         rd /q "%%i" 2>nul&title %TT%     处理文件:"%%i"
  154.     )
  155.     title %TT%     正在处理的目录:"%Source%"
  156.     echo.&call echo                 共处理了 %%num%% 张照片,按任意键继续...
  157.     pause>nul
  158. ) else if /i not "%MoveSub%"=="n" goto movesub
  159. :whethermove
  160. cls
  161. echo.
  162. echo                             ╭─────────╮
  163. echo           ╭────────┤   照片处理方式   ├─────────╮
  164. echo           │                ╰─────────╯                  │
  165. echo           │                                                        │
  166. echo           │         如果不想删除要处理文件夹下的照片,请选择复     │
  167. echo           │                                                        │
  168. echo           │    制功能;如果不保留原有的照片,请选择移动文件。      │
  169. echo           │                                                        │
  170. echo           │      注意:移动文件后,将会删除父目录下的所有空文    │
  171. echo           │                                                        │
  172. echo           │    件夹。此处的空文件夹是指删除父目录及其所有子目录    │
  173. echo           │                                                        │
  174. echo           │    下的Thumbs.db和*.ctg文件后形成的空文件夹,以及原    │
  175. echo           │                                                        │
  176. echo           │    本就存在的空文件夹。                                │
  177. echo           │                                                        │
  178. echo           │        另:同名文件将作重命名处理,具体方式为:在文    │
  179. echo           │                                                        │
  180. echo           │    件名后添加 -序号 。比如重命名为 abc-1.jpg          │
  181. echo           │                                                        │
  182. echo           ╰────────────────────────────╯
  183. echo.
  184. echo            返回上一步请按 1                                退出请按 0
  185. echo           ──────────────────────────────
  186. echo.
  187. set WhetherMove=
  188. set /p WhetherMove=                   移动文件还是复制文件(移动=M  复制=C):
  189. if not defined WhetherMove goto whethermove
  190. set "WhetherMove=%WhetherMove:"=%"
  191. if "%WhetherMove%"=="0" exit
  192. if "%WhetherMove%"=="1" goto movesub
  193. set flag=
  194. if /i "%WhetherMove%"=="M" set flag=1
  195. if /i "%WhetherMove%"=="C" set flag=1
  196. if not defined flag goto whethermove
  197. if /i "%MoveSub%"=="y" goto destination
  198. :whethersub
  199. echo.
  200. set WhetherSub=
  201. set /p WhetherSub=                   是否处理子目录(是=Y 否=N):
  202. if not defined WhetherSub goto whethersub
  203. set "WhetherSub=%WhetherSub:"=%"
  204. if /i "%WhetherSub%"=="0" exit
  205. if /i "%WhetherSub%"=="1" goto whethermove
  206. if /i "%WhetherSub%"=="y" (
  207.     set WhetherSub=/s
  208.     goto destination
  209. )
  210. if /i "%WhetherSub%"=="n" (
  211.     set WhetherSub=
  212.     goto destination
  213. )
  214. goto whethersub
  215. :destination
  216. echo.
  217. title %TT%     程序所在目录:"%cd%"
  218. set Destination=
  219. set /p Destination=          请输入保存路径(保存在程序所在目录下请直接回车):
  220. if not defined Destination set "Destination=%cd%"
  221. set "Destination=%Destination:"=%"
  222. if "%Destination%"=="0" exit
  223. if "%Destination%"=="1" goto whethermove
  224. echo "%Destination%"|find ":">nul 2>nul||set "Destination=%cd%\%Destination%"
  225. echo "%Destination%"|find /i "%Source%">nul 2>nul&&(
  226.     cls
  227.     for /l %%i in (1,1,7) do echo.
  228.     echo      为了不重复处理照片,不允许把保存路径设置到源文件所在目录下
  229.     echo.&echo                            请重新设置保存路径
  230.     echo.&echo.
  231.     goto destination
  232. )
  233. md "%Destination%" 2>nul
  234. :wise
  235. cls
  236. echo.&echo.&echo.&echo.&echo.
  237. echo                               ╭────────╮
  238. echo           ╭─────────┤  选择整理方式  ├─────────╮
  239. echo           │                  ╰────────╯                  │
  240. echo           │                                                        │
  241. echo           │         有两种整理方式可供选择:                       │
  242. echo           │                                                        │
  243. echo           │         a  按文件尺寸整理 (如800×600)               │
  244. echo           │                                                        │
  245. echo           │         b  按照拍摄日期整理(如2008-01-01)            │
  246. echo           │                                                        │
  247. echo           ╰────────────────────────────╯
  248. echo.
  249. echo            返回上一步请按 1                                退出请按 0
  250. echo           ──────────────────────────────
  251. echo.
  252. set Wise=
  253. set /p Wise=                                 请选择(a/b):
  254. if not defined Wise goto wise
  255. set "Wise=%Wise:"=%"
  256. if not defined Wise goto wise
  257. if "%Wise%"=="0" exit
  258. if "%Wise%"=="1" goto whethermove
  259. if /i "%Wise%"=="a" goto folders_dimesion
  260. if /i "%Wise%"=="b" goto folders_date
  261. goto wise
  262. :folders_dimesion
  263. cls
  264. for /l %%i in (1,1,10) do echo.
  265. echo                                正在处理中,请稍候...
  266. set num=0
  267. call :dimesion "%Source%"
  268. if defined WhetherSub (
  269.     for /f "delims=" %%i in ('dir /ad /b /s "%Source%" 2^>nul') do call :dimesion "%%i"
  270. )
  271. call :del_blank
  272. pause>nul&goto source
  273. :folders_date
  274. cls
  275. echo.&echo.&echo.
  276. echo                             ╭─────────╮
  277. echo           ╭────────┤  选择目录树格式  ├─────────╮
  278. echo           │                ╰─────────╯                  │
  279. echo           │                                                        │
  280. echo           │         在保存路径下,将建立以照片拍摄日期为名的文     │
  281. echo           │                                                        │
  282. echo           │    件夹,这些文件夹的目录树结构如下:                  │
  283. echo           │                                                        │
  284. echo           │      a 年-月-日(如 2007-01-01)                     │
  285. echo           │                                                        │
  286. echo           │        b 月\日期(如 01\2007-01-01)                   │
  287. echo           │                                                        │
  288. echo           │        c 年\日期(如 2007\2007-01-01)                 │
  289. echo           │                                                        │
  290. echo           │        d 年\月\日期 (如 2007\01\2007-01-01)          │
  291. echo           │                                                        │
  292. echo           ╰────────────────────────────╯
  293. echo.
  294. echo            返回上一步请按 1                                退出请按 0
  295. echo           ──────────────────────────────
  296. echo.
  297. set FoldersTree=
  298. set /p  FoldersTree=                                 请选择(a/b/c/d):
  299. if not defined FoldersTree goto folders_date
  300. set "FoldersTree=%FoldersTree:"=%"
  301. if "%FoldersTree%"=="0" exit
  302. if "%FoldersTree%"=="1" goto whethermove
  303. set choice=
  304. for %%i in (a b c) do if /i "%FoldersTree%"=="%%i" set choice=1
  305. if not defined choice goto folders_date
  306. cls
  307. for /l %%i in (1,1,10) do echo.
  308. echo                                正在处理中,请稍候...
  309. set num=0
  310. for /f "delims=" %%i in ('dir /a-d /b %WhetherSub% "%Source%\*.jp*g" 2^>nul') do (
  311.     set /a num+=1
  312.     jhead -ft "%%i">nul 2>nul
  313.     if defined WhetherSub (
  314.         for /f "delims=" %%j in ("%%i") do (
  315.             set str=%%~tj
  316.             set route=&set postfix=
  317.             setlocal enabledelayedexpansion
  318.             set str=!str:~0,10!
  319.             set Y=!str:~0,4!&set M=!str:~5,2!&set D=!str:~8,2!
  320.             if /i "%FoldersTree%"=="a" set Y=&set M=
  321.             if /i "%FoldersTree%"=="b" set Y=
  322.             if /i "%FoldersTree%"=="c" set M=
  323.             md "%Destination%\!Y!\!M!\!str!" 2>nul
  324.             if /i "%WhetherMove%"=="M" (
  325.                 call :re_name "%Source%\%%i" "%Destination%\!Y!\!M!\!str!" "%%~ni" "%%~xi"
  326.                 move "%%j" "!Destination_1!">nul 2>nul
  327.             ) else (
  328.                 call :re_name "%Source%\%%i" "%Destination%\!Y!\!M!\!str!" "%%~ni" "%%~xi"
  329.                 copy "%%j" "!Destination_1!">nul 2>nul
  330.             )
  331.             title %TT%     正在处理文件:"%%i"
  332.             endlocal
  333.         )
  334.     ) else (
  335.         for /f "delims=" %%j in ("%Source%\%%i") do (
  336.             set str=%%~tj
  337.             set route=&set postfix=
  338.             setlocal enabledelayedexpansion
  339.             set str=!str:~0,10!
  340.             set Y=!str:~0,4!&set M=!str:~5,2!&set D=!str:~8,2!
  341.             if /i "%FoldersTree%"=="a" set Y=&set M=
  342.             if /i "%FoldersTree%"=="b" set Y=
  343.             if /i "%FoldersTree%"=="c" set M=
  344.             md "%Destination%\!Y!\!M!\!str!" 2>nul
  345.             if /i "%WhetherMove%"=="M" (
  346.                 call :re_name "%Source%\%%i" "%Destination%\!Y!\!M!\!str!" "%%~ni" "%%~xi"
  347.                 move "%%j" "!Destination_1!">nul 2>nul
  348.             ) else (
  349.                 call :re_name "%Source%\%%i" "%Destination%\!Y!\!M!\!str!" "%%~ni" "%%~xi"
  350.                 copy "%%j" "!Destination_1!">nul 2>nul
  351.             )
  352.             title %TT%     正在处理文件:"%Source%\%%~nxi"
  353.             endlocal
  354.         )
  355.     )
  356. )
  357. call :del_blank
  358. pause>nul&goto source
  359. :dimesion
  360. :: 按照像素值在目的路径下建立文件夹
  361. for /f "tokens=2,3*" %%i in ('jhead -cs nul "%~1\*.jp*g" 2^>nul^|findstr /i "name Resolution" 2^>nul') do (
  362.     if "%%j"==":" (
  363.         set "Source=%%k"&set "name=%%~nk"&set postfix=%%~xk
  364.         title %TT%     正在处理文件:"%%k"
  365.     ) else (
  366.         setlocal enabledelayedexpansion
  367.         set "dimesion=%%j%%k"
  368.         set "dimesion=!dimesion:x =×!"
  369.         set "Destination=%Destination%\!dimesion!"
  370.         md "!Destination!" 2>nul
  371.         set route=&set postfix=
  372.         if /i "%WhetherMove%"=="M" (
  373.             call :re_name "!Source!" "!Destination!" "!name!" "!postfix!"
  374.             move "!Source!" "!Destination_1!">nul 2>nul
  375.         ) else (
  376.             call :re_name "!Source!" "!Destination!" "!name!" "!postfix!"
  377.             copy "!Source!" "!Destination_1!">nul 2>nul
  378.         )
  379.         endlocal
  380.         set /a num+=1
  381.     )
  382. )
  383. goto :eof
  384. :re_name
  385. if not defined route (
  386.     set "route=%~2"
  387.     set "filename=%~3"
  388.     set postfix=%~4
  389. )
  390. :re_name_loop
  391. if not exist "%route%\%filename%%-num%%postfix%" (
  392.     set "Destination_1=%route%\%filename%%-num%%postfix%"
  393.     set -num=&set _num=0
  394.     goto :eof
  395. ) else (
  396.     set /a _num+=1
  397.     call set "-num=-%%_num%%"
  398.     goto re_name_loop
  399. )
  400. goto :eof
  401. :del_blank
  402. if /i "%WhetherMove%"=="M" (
  403.     del /a /f /q /s "%Source%\Thumbs.db">nul 2>nul
  404.     del /a /f /q /s "%Source%\*.ctg">nul 2>nul
  405.     for /f "delims=" %%i in ('dir /ad /b /s "%Source%\"^|sort /r') do (rd /q "%%i" 2>nul)
  406.     rd /q "%Source%" 2>nul
  407. )
  408. title %TT%     当前目录:"%cd%"
  409. echo.&echo.&echo                        共处理了 %num% 张照片,按任意键继续...
  410. goto :eof
复制代码
更新历史:
  1. 更新历史:
  2. 2008.10.12
  3.   经 fastslz 提醒,增加了对jpeg格式的支持。
  4. 2008.9.3
  5.   添加了按照片分辨率大小归类的功能;为了避免重复整理,不再允许把整理后的
  6. 照片放到源文件所在目录下;精简了部分代码,使得效率有所提升;此为1.4版。
  7. 2008.8.29
  8.   修正了照片修改时间为拍摄时间时的一个错误:在处理其他路径下的照片时,不
  9. 能修改其他路径所有子目录下的照片修改时间,此错误是由于没有强制指定源文件路
  10. 径引起的。
  11. 2008.8.18
  12.   增添了通过读取照片exif信息修正照片的修改时间的功能,并且整理照片时,能
  13. 完全按照拍摄日期来归类照片,不再受照片最后修改时间的影响——前提是照片的
  14. exif信息没有丢失,代价是:使用了一个第三方命令行程序 jhead.exe。此为1.3版。
  15. 2008.4.15
  16.   修正了当程序位于A目录时不能把B目录下子目录中的照片移动到父目录的错误;
  17. 优化了一处处理流程;精简了少量代码;修改了部分提示信息;
  18. 2007.11.10
  19.   添加了按照 月\日期 格式整理照片的选项,调整了部分提示信息,此为1.2版
  20. 2007.11.7
  21.   对重名文件自动重命名,具体方式为在文件名后添加 -序号,例如:重命名
  22. 为 abc-1.jpg。此为1.1版。
  23. 2007.11.2
  24.   修正了不处理子目录时只创建文件夹而不复制/移动文件的错误,感谢somebody
  25. 的测试。
  26. 2007.11.1
  27.   美化了界面,修复了几处bug,增添了操作提示和移动照片后删除空文件夹的功能
  28. 2007.10.29
  29.   1.0 初具雏形
复制代码
jhead.exe下载地址:
http://bcn.bathome.net/s/tool/index.html?key=jhead
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
8

评分人数

    • csyktv: 最佩服花好多时间研究,把复杂变简单,最后 ...技术 + 1
    • citygun: 真的很不错学习了技术 + 1
    • zhaiw99: 感谢老大。补充JHEAD下载地址:http://down ...技术 + 1
    • Hello123World: 大大,功能演示挂掉了。技术 + 1
    • poxi: 支持Jm老大...............PB + 3

  纯P是无法查询图片尺寸的,VBS应该可以办到,可惜我还不会。

TOP

  在批处理代码的作者信息中,一般而言,JM==namejm^_^。

TOP

重大突破

2008.8.18
  增添了通过读取照片exif信息修正照片的修改时间的功能,并且整理照片时,能完全按照拍摄日期来归类照片,不再受照片最后修改时间的影响——前提是照片的exif信息没有丢失,代价是:使用了一个第三方命令行程序 jhead.exe 。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

修正一处错误

2008.8.29
  修正了照片修改时间为拍摄时间时的一个错误:在处理其他路径下的照片时,不
能修改其他路径所有子目录下的照片修改时间,此错误是由于没有强制指定源文件路
径引起的。请重新下载。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

增添了按照分辨率大小整理照片的功能

  考虑到一些摄影人士的特殊需求,增添了按照分辨率大小整理照片的功能。这次更新细节如下:

2008.9.3
  添加了按照片分辨率大小归类的功能;为了避免重复整理,不再允许把整理后的
照片放到源文件所在目录下;精简了部分代码,使得效率有所提升;此为1.4版。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

  测试无效是什么样的状况?照片没有整理?整理出错?

  请注意使用的条件:
  1、必须是jpg格式的照片,不是jpg格式的图片无法整理,不是数码相机拍摄的照片整理会出错;
  2、如果使用的是1.2之后的版本,必须和jhead.exe一起使用,并且,jhead.exe必须和批处理文件位于同一目录下。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

  呵呵,在论坛发过帖的很多会员,基本上都被管理层当头棒喝过——因为我们论坛的管理比较严格,对各种违规行为毫不手软,希望约束随心所欲乱发帖的现象,为论坛日后的搜索提供最大的方便,在这一点上,希望各位会员多多理解,N年以后,大家定能体会到严格管理的好处的。

  青出于蓝而胜于蓝,这是永恒不变的真理,只要用心,超越前人是必然的,更何况本人最近诸事缠身,对批处理的投入已经大为减少,论坛里有望超越本人或已经超越本人的大有人在,“仰望”一词,折杀我也。批处理语法其实非常简单,只要掌握了for语句和变量延迟的用法,基本上可以做很多事情了,只要肯钻研,人人都可以自学成才,不必三磕九拜行拜师大礼,更何况,论坛里有一大批热心会员会及时帮助大家解决各种疑难,自学起来就更容易了。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

Re maxdandy:

  很高兴我写的这个小脚本能帮上你的忙。

  实际上,你这种情形已经涉及到重复文件或重名文件如何处理的问题,很有进一步深究的价值。

  对于重复文件,打算通过检测md5值的方式提取出来,仅保留其中的一个而删除其余的文件;对不重复但是有可能重名的文件,提供覆盖或重命名的选项。这两步都放在照片的预处理过程中,不知道是否恰当,希望各位能提一些建议。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

返回列表