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

[文本处理] [已解决]文件名添加最后修改时间

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

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


求教ing

您来自未来?

TOP

回复 2# Demon


    其实我思想前卫  举了个  未来的 例子 哈哈哈

TOP

精确到分倒是很好办
精确到秒就要第三方命令行工具的支持了
顺便问一句,那个时间是文件的什么时间?文件的创建时间?修改时间?exif记录中的拍摄时间?
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复 4# namejm


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


是 修改时间,   相对创建时间 来的准一点  

TOP

回复 4# namejm


    精确到  分也成,
大不了 后面   +  12345789

TOP

回复 4# namejm


    用 wmic datafile                  的lastModifled

TOP

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

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年及其之后的
1

评分人数

尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

文件后缀及路径自己改
显示正常后去掉 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
复制代码
1

评分人数

TOP

我也来一个
  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"
复制代码

TOP

目测上面两段代码没修正时区

TOP

回复 10# apang


    哈哈,高手只要不搞手,总是在的  不过只能加一次分了 明天再加

TOP

回复 10# apang


    不过 不知道有没有办法 获取 拍照日期

TOP

用 jhead.exe 就很简单了
  1. jhead -n%Y-%m-%d-%H%M%S *.jpg
复制代码
只需要一条命令就可以把所有的jpg文件按日期时间重命名
jhead的官方网站在这里
http://www.sentex.net/~mwandel/jhead/
论坛里提到的底版本有bug,用官方的最新版吧
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

回复  apang


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


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

TOP

返回列表