![轻松按顺序递归获取最近修改的文件](https://linux22.com/image/1611393/%E8%BD%BB%E6%9D%BE%E6%8C%89%E9%A1%BA%E5%BA%8F%E9%80%92%E5%BD%92%E8%8E%B7%E5%8F%96%E6%9C%80%E8%BF%91%E4%BF%AE%E6%94%B9%E7%9A%84%E6%96%87%E4%BB%B6.png)
使用 Windows 时是否有可以执行的命令行字符串来显示最近编辑的记事本文件?
很多时候,我不知道我需要的文件的名称...但我知道我在过去 3 天内编辑过它。在 Windows 中,我可以用什么高效的方式执行这样的操作?
答案1
轻松按顺序递归获取最近修改的文件
使用 PowerShell 执行此操作的一种方法是...
使用获取子项获取文件
.txt
扩展名的递归列表通过管道将其输送到ForEach 对象循环并使用 分组和子表达式运算符返回
LastWriteTime
属性值,后跟逗号和每个文件的完整路径文件名 - 按值降序排序LastWriteTime
。随着#1和#2结果是一个变量,通过循环将其传递给分裂(),以逗号为分隔符,仅返回
[1]
迭代值的第 2 个索引(即)并保留时间戳的降序,但仅返回完整路径文件名。
电源外壳
$Src = "C:\YourFolder";
$z = (Get-Childitem -Path $Src -include "*.txt" -File -Recurse | % {"$($_.LastWriteTime), $($_.FullName)"}) | Sort-Object -Descending;
$z | % {$_.Split(",")[1]};
示例结构
C:\Users\user\Desktop\Dir\A
C:\Users\user\Desktop\Dir\B
C:\Users\user\Desktop\Dir\Test.txt
C:\Users\user\Desktop\Dir\Test2.txt
C:\Users\user\Desktop\Dir\Test3.txt
C:\Users\user\Desktop\Dir\A\2019-07-29 22_18_52-Inquiries.txt
C:\Users\user\Desktop\Dir\A\blah.txt
C:\Users\user\Desktop\Dir\A\Test4.txt
C:\Users\user\Desktop\Dir\B\FLLtest.txt
C:\Users\user\Desktop\Dir\B\FLLtest2.txt
命令输出示例(包含日期时间)
PS C:\Users\user> (Get-Childitem -Path $Src -include "*.txt" -File -Recurse | % {"$($_.LastWriteTime), $($_.FullName)"}) | Sort-Object -Descending;
12/09/2019 18:14:09, C:\Users\user\Desktop\Dir\A\Test4.txt
12/08/2019 20:27:26, C:\Users\user\Desktop\Dir\Test2.txt
12/03/2019 23:55:50, C:\Users\user\Desktop\Dir\Test3.txt
11/02/2019 12:51:35, C:\Users\user\Desktop\Dir\B\FLLtest2.txt
11/02/2019 12:49:09, C:\Users\user\Desktop\Dir\B\FLLtest.txt
07/29/2019 22:38:33, C:\Users\user\Desktop\Dir\A\blah.txt
07/29/2019 22:38:17, C:\Users\user\Desktop\Dir\A\2019-07-29 22_18_52-Inquiries.txt
06/21/2019 23:38:01, C:\Users\user\Desktop\Dir\Test.txt
完整脚本输出示例
C:\Users\user\Desktop\Dir\A\Test4.txt
C:\Users\user\Desktop\Dir\Test2.txt
C:\Users\user\Desktop\Dir\Test3.txt
C:\Users\user\Desktop\Dir\B\FLLtest2.txt
C:\Users\user\Desktop\Dir\B\FLLtest.txt
C:\Users\user\Desktop\Dir\A\blah.txt
C:\Users\user\Desktop\Dir\A\2019-07-29 22_18_52-Inquiries.txt
C:\Users\user\Desktop\Dir\Test.txt
支持资源
- 获取子项
- ForEach 对象
标准别名对于 Foreach 对象:'
%
' 符号,ForEach - 排序对象
- 分裂()
答案2
这是一个简单的选项,可以做到这一点命令/批或仅适用于本地/文件夹列表的命令行:
/o:d = order by date (old first) || is the same /od
/o-d = order by date (reverse -) || is the same /o:-d
/b = basic out put (name only)
/s = recursively
:: - - - - - - - - - - - - - - - - - - - - - - - - - - ::
rem./ you can use any options...
dir /o:-d /b /s
dir /o-d /b /s
dir /o-d/b/s
dir/o-d/b/s