如何在Windows命令行上获取文件的最后修改date?

我一直在使用下面的命令获取文件date。 但是,自从我们移到不同的服务器(Windows Server 2003)以来, fileDatevariables一直返回空值。

 FOR /f %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a 

有没有其他更可靠的方法来获取文件date?

%更改为%% ,以便在批处理文件中使用,对于%~ta语法,请输入call /?

 for %a in (MyFile.txt) do set FileDate=%~ta 

你能行的

 forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime" 

它在Vista上适用于我。 有些事情要尝试:

  1. find替换为find命令的全限定路径。 find是一个常用的工具名称。 有一个unix发现是从Windows内置查找非常不同。 喜欢这个:
    FOR /f %%a in ('dir ^|%windir%\system32\find.exe /i "myfile.txt"') DO SET fileDate=%%a

  2. 在cmd.exe窗口中检查命令的输出。 为此,您需要用%替换%%。
    FOR /f %a in ('dir ^|c:\windows\system32\find.exe /i "myfile.txt"') DO SET fileDate=%a
    这可能会给你一些想法。

  3. 如果显示为空白,则再次在命令提示符处尝试以下操作:

    dir | c:\windows\system32\find.exe /i "myfile.txt"

这应该告诉你你需要看到什么。

如果你仍然不能解决这个问题,编辑你的文章,包括你看到这些命令,有人会帮助你。

您也可以使用vbscript获取文件修改日期

 Set objFS=CreateObject("Scripting.FileSystemObject") Set objArgs = WScript.Arguments strFile= objArgs(0) WScript.Echo objFS.GetFile(strFile).DateLastModified 

保存上面mygetdate.vbs和命令行

 c:\test> cscript //nologo mygetdate.vbs myfile 

dir myfile.txt在当前目录中输出(确切地说)是什么? 如果你设置了分隔符,会发生什么?

 FOR /f "tokens=1,2* delims= " %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a 

(注意delims=之后的delims=
(为了使生活更轻松,可以通过用%%a替换%%a从命令行执行此操作)