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

[日期时间] [已解决]批处理怎样获取完整的文件创建时间需要到秒?

获取完整的文件创建时间需要到秒
dir 命令只能到分钟 还有其它命令吗?

这几天整理照片发现新问题,经过几次存储转移后,创建时间会改变不准确,观察后发展拍摄时间才是不会变,能不能获取详细信息里照片的拍摄时间,需要精确到秒,手机上网不能传图片。
最好是bat代码,其它代码亦可。


http://www.bathome.net/thread-15792-1-1.html

回复 8# WHY


    感谢

TOP

本帖最后由 WHY 于 2019-7-12 13:17 编辑

Test.bat
需要下载第三方工具jhead.exe
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1* delims=:" %%i in ('jhead *.jpg ^| findstr /b /r /i /c:"File Name" /c:"Date/Time"') do (
  4.     set "curLine=%%j"
  5.     if "!curLine::=!" NEQ "!curLine!" (
  6.         echo;!curLine:~1! !preLine!
  7.     ) else if /i "!preLine:~-3!" EQU "jpg" (
  8.         echo;NULL !preLine!
  9.     )
  10.     set "preLine=%%j"
  11. )
  12. if /i "!preLine:~-3!" EQU "jpg" (echo;NULL !preLine!)
  13. pause
复制代码
结果:
2019:07:11 08:12:18      img002.jpg
NULL                     img004.jpg
2019:07:11 08:12:32      img100.jpg
2019:07:11 08:11:47      img101.jpg
请按任意键继续. . .

TOP

PowerShell 脚本
  1. [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');
  2. forEach ( $file In (dir E:\Test\*.jpg -File) ){
  3.     $image = [System.Drawing.Image]::fromFile($file.FullName);
  4.     try {
  5.         $propItem = $image.GetPropertyItem(0x9003).Value;        #0x9003=拍摄时间;0x0132=最后更新时间
  6.         $dateStr  = [char[]]$propItem -join '' -replace '\x00$'; #日期字符串
  7.         $dateStr + "`t" + $file.Name;
  8.     } catch {
  9.         "NULL`t`t`t" + $file.Name;   #无拍摄日期时回显NULL
  10.     }
  11. }
  12. pause
复制代码
结果:
2019:07:11 08:12:18     img002.jpg
NULL                    img004.jpg
2019:07:11 08:12:32     img100.jpg
2019:07:11 08:11:47     img101.jpg

TOP

本帖最后由 yangfengoo 于 2019-7-10 21:56 编辑


获取完整的文件创建时间需要到秒
dir 命令只能到分钟 还有其它命令吗?

这几天整理照片发现新问题,经过几次存储转移后,创建时间会改变不准确,观察后发展拍摄时间才是不会变,能不能获取详细信息里照片的拍摄时间,需要精确到秒,手机上网不能传图片。
最好是bat代码,其它代码亦可。

TOP

  1. PowerShell "dir 'E:\Test\' -Recurse | ?{$_ -is [IO.FileInfo]} | ForEach{$_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss') + ' ' + $_.FullName}"
复制代码

TOP

本帖最后由 yhcfsr 于 2018-8-22 07:18 编辑

有意思,标题是创建日期,图片是修改日期.顺便说下,这是JS,虽然和VBS没有区别
最近的修改日期:file.DateLastModified
最近的访问日期:file.DateLastAccessed
QQ 33892006

TOP

回复 3# yhcfsr


    VBS代码不了解,运行没问题,第9行要小修一下我要的是圈起来的时间。

TOP

  1. @set @n=0/*&echo off
  2. dir /a-d/s/b|Cscript -nologo -e:jscript "%~f0"
  3. pause&exit /b */
  4. var fso=new ActiveXObject('scripting.FileSystemObject');
  5. while(!WSH.StdIn.AtEndOfStream)
  6. {
  7. file=fso.GetFile(WSH.StdIn.ReadLine());
  8. WSH.Echo(file.DateCreated,'\t'+file);
  9. }
复制代码
把脚本放在源目录
1

评分人数

    • yangfengoo: VBS代码不了解运行没问题,第9行要小修一下 ...技术 + 1
QQ 33892006

TOP

  1. wmic datafile where "Name='C:\\Test\\a.txt'" get CreationDate /value
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表