Ric*_*pit 19 windows command batch-file
我一直在使用以下命令来获取文件日期.但是,fileDate自从我们移动到另一台服务器(Windows Server 2003)以来,该变量一直在返回空白值.
FOR /f %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a
Run Code Online (Sandbox Code Playgroud)
有没有其他更可靠的方法来获取文件日期?
And*_*ris 36
更改%到%%在批处理文件中使用,对于%~ta语法进入call /?
for %a in (MyFile.txt) do set FileDate=%~ta
Run Code Online (Sandbox Code Playgroud)
小智 13
你能行的
forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime"
Run Code Online (Sandbox Code Playgroud)
使用批处理文件获取文件属性的有用参考是最后修改时间:
FOR %%? IN ("C:\somefile\path\file.txt") DO (
ECHO File Name Only : %%~n?
ECHO File Extension : %%~x?
ECHO Name in 8.3 notation : %%~sn?
ECHO File Attributes : %%~a?
ECHO Located on Drive : %%~d?
ECHO File Size : %%~z?
ECHO Last-Modified Date : %%~t?
ECHO Drive and Path : %%~dp?
ECHO Drive : %%~d?
ECHO Fully Qualified Path : %%~f?
ECHO FQP in 8.3 notation : %%~sf?
ECHO Location in the PATH : %%~dp$PATH:?
)
Run Code Online (Sandbox Code Playgroud)
要以与语言环境无关的方式获取文件的最后修改日期/时间,您可以使用带有别名的wmic命令DataFile:
wmic DataFile where "Name='D:\\Path\\To\\myfile.txt'" get LastModified /VALUE
Run Code Online (Sandbox Code Playgroud)
请注意,必须提供文件的完整路径,并且所有路径分隔符(反斜杠\)在此处必须加倍。
这将返回这样的标准化日期/时间值(意味着2019 年 8 月12日,13:00:00,UTC + 120'):
Run Code Online (Sandbox Code Playgroud)LastModified=20190812130000.000000+120
要捕获日期/时间值 use 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"
Run Code Online (Sandbox Code Playgroud)
第二个for /F循环避免wmic了第一个for /F循环将 Unicode 输出转换为 ASCII/ANSI 文本时的人工制品(如孤立的回车符)(另请参阅此答案)。
然后,您可以使用子字符串扩展来从中提取纯日期或时间:
set "DateOnly=%DateTime:~0,8%"
set "TimeOnly=%DateTime:~8,6%"
Run Code Online (Sandbox Code Playgroud)
要获得创建日期/时间或最后访问日期/时间,只需更换物业LastModified的CreationDate或LastAccessed分别。要获取有关目录而不是文件的信息,请使用别名FSDir而不是DataFile.
要指定包含,和)通常不被接受的文件(或目录)路径/名称wmic,请查看此问题。
退房还这篇文章以及这一个有关如何获取文件和目录的日期/时间戳记。
| 归档时间: |
|
| 查看次数: |
144942 次 |
| 最近记录: |