我一直在使用以下命令來獲取文件日期。但是,自從我們遷移到其他服務器(Windows Server 2003)以來,fileDate
變量已經返回空值。如何在Windows命令行上獲取文件的上次修改日期?
FOR /f %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a
有沒有其他更可靠的方法來獲取文件日期?
我一直在使用以下命令來獲取文件日期。但是,自從我們遷移到其他服務器(Windows Server 2003)以來,fileDate
變量已經返回空值。如何在Windows命令行上獲取文件的上次修改日期?
FOR /f %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a
有沒有其他更可靠的方法來獲取文件日期?
變化%
到%%
在批處理文件中使用,用於%~ta
語法進入call /?
for %a in (MyFile.txt) do set FileDate=%~ta
它適用於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"
這應該告訴你,你需要看到的。
如果你仍然不能解決這個問題,編輯你的文章,包括你看到這些命令,有人會幫助你。
我的陳述和(第1步和第2步)在我的計算機和任何其他win server 2003上都能正常工作。這可能是一個問題,它在服務ID下運行並由調度程序觸發? – 2010-01-21 18:03:50
是的,它可能是。對於不同的服務ID,查找程序可能會有所不同,因爲它具有不同的路徑。最好在服務ID下運行這些命令來捕獲和檢查輸出。 – Cheeso 2010-01-21 18:21:40
幾年前,由於命令處理器的語言不同(在我們的例子中,我們的批處理文件以win2000英文和西班牙文工作,但德文失敗),因此有關DIR命令輸出批處理的一些類似問題。 – 2010-01-21 20:55:56
什麼輸出(正好)確實dir myfile.txt
在當前目錄中給出?如果你設置了分隔符,會發生什麼?
FOR /f "tokens=1,2* delims= " %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a
(注意delims=
後面的空格)
您可以使用VBScript也得到一個文件修改日期(用%a
更換%%a
,使生活更輕鬆,你可以在命令行中執行此操作)
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
你可以做到這一點
forfiles /M myfile.txt /C "cmd /c echo @fdate @ftime"
有用的參考,以獲取文件屬性使用批處理文件,包含的是上次修改時間:
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 Parent Folder : %%~dp?
ECHO Fully Qualified Path : %%~f?
ECHO FQP in 8.3 notation : %%~sf?
ECHO Location in the PATH : %%~dp$PATH:?
)
+1。這實際上是正確的。解析'dir'的輸出最好是瘋狂。注意:在批處理文件中,加上'%'符號。 – Joey 2010-01-22 17:15:15
謝謝,還有一個問題:如何獲取日期部分。以下語法是否足夠可靠還是有更好的方法。 集FILEDATE =%FILEDATE:〜0.10% – 2010-01-25 19:33:17
如果你改變了國際設置可能無法正常工作,但除此之外,它應該確定 – 2010-01-25 20:39:06