我想知道文件最后一次被修改的时间。
我可以使用以下批处理脚本获取这些信息:
对 %%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