我一直在使用下面的命令获取文件date。 但是,自从我们移到不同的服务器(Windows Server 2003)以来, fileDate
variables一直返回空值。
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上适用于我。 有些事情要尝试:
将find
替换为find命令的全限定路径。 find
是一个常用的工具名称。 有一个unix发现是从Windows内置查找非常不同。 喜欢这个:
FOR /f %%a in ('dir ^|%windir%\system32\find.exe /i "myfile.txt"') DO SET fileDate=%%a
在cmd.exe窗口中检查命令的输出。 为此,您需要用%替换%%。
FOR /f %a in ('dir ^|c:\windows\system32\find.exe /i "myfile.txt"') DO SET fileDate=%a
这可能会给你一些想法。
如果显示为空白,则再次在命令提示符处尝试以下操作:
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
从命令行执行此操作)