要以独立于语言环境的方式获取文件的最后修改日期/时间,您可以使用 wmic command 和 DataFile 别名:
wmic DataFile where "Name='D:\\Path\\To\\myfile.txt'" get LastModified /VALUE
注意必须提供文件的完整路径,并且所有路径分隔符(反斜杠\)必须在此处加倍。
这会返回像这样的标准化日期/时间值(表示 2019 年 8 月 12th,13:00:00,UTC + 120'):
LastModified=20190812130000.000000+120
要捕获日期/时间值,请使用 for /F,然后您可以使用 set 将其分配给变量:
for /F "delims=" %%I in ('
wmic DataFile where "Name='D:\\Path\\To\\myfile.txt'" get LastModified /VALUE
') do for /F "tokens=1* delims==" %%J in ("%%I") do set "DateTime=%%K"
第二个for /F 循环通过第一个for /F 循环避免了将wmic 的Unicode 输出转换为ASCII/ANSI 文本的伪影(如孤立的回车字符)(另请参见this answer)。
然后您可以使用sub-string expansion 从中提取纯日期或时间:
set "DateOnly=%DateTime:~0,8%"
set "TimeOnly=%DateTime:~8,6%"
要获取创建日期/时间或上次访问日期/时间,只需将属性LastModified 分别替换为CreationDate 或LastAccessed。要获取有关目录而不是文件的信息,请使用别名 FSDir 而不是 DataFile。
要指定同时包含, 和) 的文件(或目录)路径/名称,wmic 通常不接受这些路径/名称,请查看this question。
还可以查看this post 和this one,了解如何获取文件和目录的日期/时间戳。