Windows Vista / 7 及更高版本

Windows Vista / 7 及更高版本

我想知道文件最后一次被修改的时间。

我可以使用以下批处理脚本获取这些信息:

对 %%i 在 (myfile) 中设置 modif_time=%%~ti

问题是我需要最后一次修改的第二个,而命令%~t仅返回带有小时和分钟的日期和时间。

我只能通过手动逐个文件查看“属性窗口”来检查秒数。

如何批量获取以秒为单位的时间?

答案1

Windows Vista / 7 及更高版本

Windows Server 2003 及更高版本

只需稍加努力,您就可以forfiles获取特定文件的最后修改时间(包括秒数):

REM "delims=" is required to avoid stripping AM/PM
for /f "delims=" %%i in ('"forfiles /m filename /c "cmd /c echo @ftime" "') do set modif_time=%%i
echo %modif_time%

示例输出

7:33:54 AM

显示的值基于计算机的本地时间,并与文件属性对话框中显示的时间相匹配。

使用帮助

http://technet.microsoft.com/en-us/library/cc753551.aspx


Windows XP

forfiles.exe不是开箱即用的,但是你可以手动获取必需的可执行文件。它是 Windows 2000 资源工具包的一部分,是旧版本。语法区分大小写且略有不同,输出也是如此:

for /f %%i in ('"forfiles.exe -mfilename -c"cmd /c echo @FTIME" "') do set modif_time=%%i
echo %modif_time%

示例输出

153354

这里的时间值以 UTC 格式显示,不受时区或夏令时变化的影响。在此示例中,文件最后修改时间为 15:33:54 (UTC)。

笔记您可以forfiles.exe从任何 Windows 2003 Server 安装或设置媒体中获取文件副本来获取较新版本。

答案2

使用具有此功能的命令解释器。

以下是如何使用JP Software 的 TCC/LE,并加入一些主题变化以达到更好的效果:

[C:\Users\JdeBP]touch /c myfile
10/01/2014 18:31:32.710  C:\Users\JdeBP\myfile

[C:\Users\JdeBP]echo myfile was created at %@filetime[myfile,c,s]
myfile was created at 18:31:32

[C:\Users\JdeBP]echo myfile was last accessed at %@filetime[myfile,a,s]
myfile was last accessed at 18:31:32

[C:\Users\JdeBP]for i in (myfile) do set modif_time=%@filetime[%i,w,s]

[C:\Users\JdeBP]echo myfile was last modified at %modif_time%
myfile was last modified at 18:31:32

进一步阅读

  • JP 软件。@文件时间. 采取命令/TCC 帮助。
  • JP 软件。触碰. 采取命令/TCC 帮助。

相关内容