2014-08-29 91 views
1

我在其中包含内容的目录中有许多文件夹。如何快速查看它们何时被修改?我的文件夹列表很大,所以我想以编程方式执行此操作。但希望以文本格式获得结果。如果需要,我可以从cmd复制和粘贴。还有最后一次输入文件夹的时候(比如touch什么的)?快速查看在窗口中修改了多个文件夹的内容

所以我想看到的文件夹名称,修改日期,最近一次是进入该文件夹,例如:

file1 modified-date touch-date 
file2 modified-date touch-date 
file3 modified-date touch-date 
. 
. 

是否有一个Windows命令行命令或其他本机Windows方法可以轻松地做到这一点?

+0

你是什么意思的“看到”?这是你想要从代码,或使用Windows,打字和点击的东西? – 2014-08-29 18:52:34

+0

我的文件夹列表很大,所以我想以编程方式执行此操作。但希望以文本格式获得结果。如有必要,我可以从CMD复制和粘贴。 – brno792 2014-08-29 18:56:00

+1

你对写Powershell感到满意吗? – rrirower 2014-08-29 19:16:43

回答

0

如果您在命令行或搜索框中键入powershell进入powershell。

对于由修改日期

Get-ChildItem c:\ | Sort-Object LastWriteTime | Select-Object Name, 
LastWriteTime, LastAccessTime 

分拣通过访问日期

Get-ChildItem c:\ | Sort-Object LastAccessTime | Select-Object Name, 
LastWriteTime, LastAccessTime 

排序你还可以用结束后以下发送任何一个文件。用你自己的替换路径和文件。

>> c:\path\file.text 

只要确保编写以管理员身份运行PowerShell的文件即可。

CreationDate是对象列表或排序依据的另一种选择。

您还可以在排序对象对象之后使用-descending或 - ascending以不同顺序排序,默认情况下升序。

另外,如果你只想文件夹包括其中右后一开始childItem像这样

Get-ChildItem C:\ | where {$_.PsIsContainer} | Sort-Object LastAccessTime | 
Select-Object Name, LastWriteTime, LastAccessTime 
0

首先一个警告:

由于Vista的默认设置为NTFS文件系统(冗余FS是冗余的)是由于性能原因不更新上次访问时间(对每次读取添加写入)。您可以通过在提示提示下发出以下命令来更改它:fsutil behavior set DisableLastAccess 0

使用纯DOS命令在批处理文件:

@echo off 
for /f "usebackq tokens=*" %%i in (`dir /ad /s /b`) do (
    for /f "usebackq tokens=1-3" %%j in (`dir /ad /ta "%%i" ^| find "<DIR>" ^| find " ." ^| find /v ".."`) do echo %%j %%k %%l %%i 
) 

不是排序的日期格式理所当然,但它会给你所有的目录和上次访问的时间戳(这是/ta做什么)。回波线中的%%l%%i之间有一个制表符。

细分:获取所有目录/ad递归/s只显示路径/b。对于每个这样的行,获取上次访问时间戳/ta的目录内容。我们只想要<DIR>这行就是当前目录(单点)。必须有点复杂,以避免父母..条目,但这是批量给你。

你可以重新格式化成日期YYYY-MM-DD格式用于此排序,而不是上面的回波:

... do (set x=%%j & echo %x:~6,4%-%x:~0,2%-%x:~3,2% %%k %%l %%i) 

即假定为mm/dd/yyyy的原始日期当然格式;根据您的需要修改012'slice'n'dice。不包括时间,因为DIR命令返回一个AM/PM值而不是24小时,我们需要使用子程序调用来完成那么多的逻辑。

+0

我不确定'/ ta'是否按预期工作。在Windows 8中,我使用'dir/ta'和一个文件夹显示'13:45' - 在CD到文件夹并从文件夹中退出后仍然显示'13:45'(这是一小时前)。 – foxidrive 2014-08-31 04:36:37

+0

由于Vista,NTFS文件系统的默认设置(冗余FS是冗余的)不会因为性能原因而更新。您可以通过在提示提示下发出以下命令来更改它: 'fsutil行为设置DisableLastAccess 0' – Torqane 2014-09-01 05:56:49

+0

感谢您的信息。在你的回答之前,你应该清楚地注意到 - 保存某人在默认系统上尝试它,并想知道为什么它不起作用。 – foxidrive 2014-09-01 06:35:22