Board logo

标题: [文本处理] [已解决]文件名添加最后修改时间 [打印本页]

作者: fire999999999    时间: 2013-1-6 21:10     标题: [已解决]文件名添加最后修改时间

本帖最后由 pcl_test 于 2017-6-14 17:34 编辑

谁用 批处理   处理过  *.JPG   
修改时间精确到秒.jpg (2013-09-06-095206.jpg)


求教ing
作者: Demon    时间: 2013-1-6 21:15

您来自未来?
作者: fire999999999    时间: 2013-1-6 21:17

回复 2# Demon


    其实我思想前卫  举了个  未来的 例子 哈哈哈
作者: namejm    时间: 2013-1-6 21:33

精确到分倒是很好办
精确到秒就要第三方命令行工具的支持了
顺便问一句,那个时间是文件的什么时间?文件的创建时间?修改时间?exif记录中的拍摄时间?
作者: fire999999999    时间: 2013-1-6 21:39

回复 4# namejm


   哈哈  namejm   ,  还在玩批处理?  以前 在DOS联盟里 起来的  好像??


是 修改时间,   相对创建时间 来的准一点  
作者: fire999999999    时间: 2013-1-6 21:45

回复 4# namejm


    精确到  分也成,
大不了 后面   +  12345789
作者: fire999999999    时间: 2013-1-6 22:02

回复 4# namejm


    用 wmic datafile                  的lastModifled
作者: namejm    时间: 2013-1-6 22:54

啊呀我的妈呀,连我的老底都摸得那么清楚,长得帅我容易吗我^_^

wmic没怎么玩过,还是给段纯批的代码吧
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,2,3*" %%i in ('dir /a-d *.jpg ^|findstr /b "20[0-9][0-9]-"') do (
  4. set _time=%%j
  5. set _time=!_time::=!
  6. echo ren "%%l" "%%i-!_time!.jpg"
  7. )
  8. pause
复制代码
这个代码不会真正修改文件名,如果效果是你想要的,把 echo ren... 语句前的 echo 去掉,重新执行就会真正修改文件名了
  使用这个代码有很多限制:
  1、dir的结果中,每行的文件信息显示为 "日期 时间 字节大小 文件名" 的格式,其中,日期时间的格式和系统的区域设置有关;
  2、文件名中不能含有半角的感叹号
  3、最后修改日期必须是2000年及其之后的
作者: terse    时间: 2013-1-6 23:21

文件后缀及路径自己改
显示正常后去掉 ECHO(提示:请先备份)
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=1 tokens=1*" %%i in ('wmic datafile where "drive='f:' and path='\\jpg\\' and Extension='jpg'" get name^,LastModified') do (
  3.     set "Tm=%%~ni"
  4.     for /f "tokens=*" %%x in ("%%j") do ECHO ren "%%~fx" "!Tm:~,4!-!Tm:~4,2!-!Tm:~6,2!-!Tm:~8,2!-!Tm:~10,2!-!Tm:~12,2!%%~xx"
  5. )
  6. pause
复制代码

作者: apang    时间: 2013-1-7 00:03

我也来一个
  1. @echo off
  2. set "P=%~p0"
  3. set "P=%P:\=\\%"
  4. set "wmic=wmic datafile where"
  5. for /f "tokens=1*" %%a in ('%wmic% "drive='%~d0' and path='%P%' and extension='jpg'" get LastModified^,name^|find "\"') do (
  6.   set "d=%%a"
  7.   for /f "tokens=*" %%c in ("%%b") do set "File=%%~nxc"
  8.   setlocal enabledelayedexpansion
  9.   set "d=!d:~,4!-!d:~4,2!-!d:~6,2!-!d:~8,6!"
  10.   ren "!File!" "!d!.jpg"
  11.   endlocal
  12. )
  13. pause
复制代码
vbs 权当练习:
  1. set fso = createobject("scripting.filesystemobject")
  2. for each file in fso.getfolder(".").files
  3.    ext = fso.getextensionname(file)
  4.    if lcase(ext) = "jpg" then
  5.       d = file.datelastmodified
  6.       d = right(year(d),4)&"-"&right("0"&month(d),2)&"-"&_
  7.       right("0"&day(d),2)&"-"&right("0"&hour(d),2)&_
  8.       right("0"&minute(d),2)&right("0"&second(d),2)
  9.       if lcase(file.name) <> d & ".jpg" then file.name = d & ".jpg"
  10.    end if
  11. next
  12. msgbox "OK"
复制代码

作者: Demon    时间: 2013-1-7 08:14

目测上面两段代码没修正时区
作者: fire999999999    时间: 2013-1-7 09:11

回复 10# apang


    哈哈,高手只要不搞手,总是在的  不过只能加一次分了 明天再加
作者: fire999999999    时间: 2013-1-7 20:18

回复 10# apang


    不过 不知道有没有办法 获取 拍照日期
作者: namejm    时间: 2013-1-7 21:08

用 jhead.exe 就很简单了
  1. jhead -n%Y-%m-%d-%H%M%S *.jpg
复制代码
只需要一条命令就可以把所有的jpg文件按日期时间重命名
jhead的官方网站在这里
http://www.sentex.net/~mwandel/jhead/
论坛里提到的底版本有bug,用官方的最新版吧
作者: terse    时间: 2013-1-8 11:01

回复  apang


    不过 不知道有没有办法 获取 拍照日期
fire999999999 发表于 2013-1-7 20:18


办法也不是没有 不过你是否就确认全部图片含EXIF吗 有点也没有




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