快速查看Windows中修改了多个文件夹的内容

时间:2014-08-29 18:49:20

标签: windows cmd

我在目录中有许多文件夹,其中包含内容。如何快速查看修改时间?我的文件夹列表很大,所以我想以编程方式执行此操作。但希望以文本格式获得结果。如有必要,我可以从cmd复制和粘贴。以及上次输入文件夹时(如touch或其他什么)?

所以我想查看文件夹名称,修改日期和上次输入文件夹的时间,例如:

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

是否有Windows命令行命令或其他本机Windows方式可以轻松完成此操作?

2 个答案:

答案 0 :(得分: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是对象列出或排序的另一个选项。

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

另外,如果您只想让文件夹包含get-childItem之后的位置,那么

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

答案 1 :(得分: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原始日期格式;根据您的需要修改%x切片骰子。时间不包括在内,因为DIR命令返回AM / PM值而不是24小时,我们需要使用子程序调用来做那么多逻辑。