2014-09-22 201 views
2

查詢兩個日期的最明智的方法是什麼? PowerShell或Windows批處理解決方案是首選。 我想有作爲主題描述的列表:創建一個包含文件名,創建日期,修改日期的列表

文件名,創建日期,最後修改

我知道: 風向有/ T:A,W,C]但不能找到一種方法來一次顯示多個日期。 對於只有查詢修改日期的@fdate @ftime文件。

+0

把'Get-ChildItem'傳送到'Select-Object'中會有效果。這是有據可查的 – Matt 2014-09-22 15:12:32

回答

4

如果PowerShell是可以接受的:

Get-ChildItem | Select-Object -Property Name, CreationTime, LastWriteTime 
2
wmic datafile where (drive="C:" and path="\\somedir\\somesubdir\\") get Caption,CreationDate,LastModified 

這不是一個完整的劇本,但只是一個example.Change驅動器和路徑的目錄你想(在路徑雙斜線的心)名單。您還應該注意WMIC輸出是unicode(與cmd不同) 而WMIC在XP家庭版中不可用。

您還可以使用構建在JScript(每個窗口有它),並創建一個混合.BAT/JScript中(保存/使用腳本.BAT):

@if (@X)==(@Y) @end /*JScript comment** 

@echo off 
cscript //E:JScript //nologo "%~f0" "%~1" 
exit /b 0 

***************End of JScript comment**/ 

WScript.Echo("====starting==="); 
var args=WScript.Arguments; 
var folderC=args.Item(0); 
if (WScript.Arguments.lengrh == 1 || args.Item(0)=="" ) folderC = "."; 

WScript.Echo("Checking "+folderC); 

function fileLIster(folderC){ 

    var fso = new ActiveXObject("Scripting.FileSystemObject"); 
    var folder = fso.GetFolder(folderC); 

    var fc = new Enumerator(folder.files); 
    var s = ""; 
    for (; !fc.atEnd(); fc.moveNext()) { 
     s += fc.item() + " Created:[" + fc.item().DateCreated + "] Modified:[" + fc.item().DateLastModified+"]" ; 
     s += "\r\n"; 
    } 
    WScript.Echo(s); 

} 
fileLIster(folderC); 

這是一個簡單的批處理文件它接受一個參數,用於列出要列入文件的目錄並輸出文件名,創建日期和修改日期。

2

不是特別快,但它的作品,我認爲這是語言環境無關:

@echo off 
for %%F in (*) do for /f %%C in (
    'dir /tc "%%F"^|findstr "^[0-9]"' 
) do for /f %%M in ("%%~tF") do echo "%%F", %%C, %%M 


這是快,但我認爲這是依賴於規定的時間格式的語言環境。您可能需要更改該令牌在第一FOR/F環捕獲:

@echo off 
for /f "tokens=1,4*" %%A in (
    'dir /a-d /tc *^|findstr "^[0-9]"' 
) do for /f %%M in ("%%~tC") do echo "%%C", %%A, %%M 

我的時間格式爲HH:MM AM。如果你的時間格式是沒有AM/PM的24小時格式,那麼我認爲你需要"tokens=1,3*"