2014-09-22 105 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*"