我想知道最后一次修改文件的时间。
我可以使用以下批处理脚本获取这些信息:
FOR %% i IN(myfile)DO SET modif_time = %% ~ti
问题是我需要最后修改的第二个,而%~t
命令只返回小时和分钟的日期和时间。
我只能通过手动查看“属性窗口”文件来检查秒数。
如何批量获得秒数?
答案 0 :(得分:4)
在 Windows 7并转发(或通过Resource Kit for XP)中,您可以使用forfiles
。类似的东西:
forfiles /m *.* /c "cmd /c ECHO The last modified date of: @file is: @ftime"
在包含以下文件的目录中:
myTest.txt
myTest2.txt
我明白了:
The last modified date of: "myTest.txt" is: 13:21:07
The last modified date of: "myTest2.txt" is: 13:21:20
答案 1 :(得分:2)
wmic datafile where name="FileName" get LastModified
FileName
必须包含带有双退格的完整路径。
排序示例(最近的第一个):
for /f "delims=" %a in ('wmic datafile where "drive='c:' and path='\\windows\\'" get LastModified^,Name /format:table^|find ":"^|sort /r') do @echo %a
答案 2 :(得分:1)
wmic datafile where "drive='c:' and path='\\windows\\'" get "Last Modified",Name
答案 3 :(得分:0)
您可以在批处理文件中嵌入一个小的JScript,以获取最后修改的纪元:
@if (@a==@b) @end /*
@echo off
SetLocal EnableDelayedExpansion
set EPOCH=0
FOR /F "delims=" %%D in ('cscript /nologo /e:jscript "%~f0" "%1"') do (
set EPOCH=%%D
)
echo Last modified (epoch-seconds): !EPOCH!
goto :eof
*/
var fs = new ActiveXObject("Scripting.FileSystemObject");
var filename = WSH.Arguments(0)
var millis = -1
if (fs.FileExists(filename))
{
var file = fs.GetFile(filename);
millis = Date.parse(file.DateLastModified) / 1000;
}
WSH.Echo(millis);
/* */
将在作为JScript运行时注释掉批处理脚本,而@if (@a==@b) @end
和goto :eof
将在作为批处理脚本运行时跳过JScript
>epoch.bat epoch.bat
Last modified (epoch-seconds): 1533282229
>epoch.bat "epoch.bat"
Last modified (epoch-seconds): 1533282229
>epoch.bat notareal.file
Last modified (epoch-seconds): -1