Powershell脚本,列出近3日打开的文件夹并打开

使用说明:

  1. 将上述代码保存为 .ps1 文件(例如 Get-RecentFolders.ps1)。

  2. 以普通用户身份运行 PowerShell,执行该脚本即可。

  3. 输出结果按最后访问时间倒序排列,包含文件夹路径和访问时间。

需要注意:这个方法依赖于 Windows 的"最近使用的项目"功能,你需要在 设置 → 个性化 → 开始 中开启"在'开始'、'跳转列表'和文件资源管理器中显示最近打开的项目",否则 Recent 文件夹可能不会记录文件夹访问。另外,该文件夹中的快捷方式有时可能指向已移动或删除的路径,脚本已做容错处理。

方式一:交互式逐个确认打开

bash 复制代码
# 列出近 3 日内打开的文件夹,并逐个询问是否打开

$recentFolderPath = [System.IO.Path]::Combine($env:APPDATA, 'Microsoft\Windows\Recent')
$cutoffDate = (Get-Date).AddDays(-3)

$recentLinks = Get-ChildItem -Path $recentFolderPath -Filter *.lnk -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -gt $cutoffDate }

$results = foreach ($link in $recentLinks) {
    try {
        $shell = New-Object -ComObject WScript.Shell
        $shortcut = $shell.CreateShortcut($link.FullName)
        $targetPath = $shortcut.TargetPath

        if ((Test-Path -Path $targetPath -PathType Container -ErrorAction SilentlyContinue)) {
            [PSCustomObject]@{
                FolderPath   = $targetPath
                LastAccessed = $link.LastWriteTime
            }
        }
    } catch {
        # 忽略无法解析的快捷方式
    }
}

$results = $results | Sort-Object LastAccessed -Descending

# 逐个确认打开
foreach ($item in $results) {
    Write-Host "文件夹: $($item.FolderPath)  (最后访问: $($item.LastAccessed))"
    $answer = Read-Host "是否打开? (Y/N)"
    if ($answer -eq 'Y' -or $answer -eq 'y') {
        Invoke-Item -Path $item.FolderPath
    }
}

方式二:直接全部打开(谨慎使用)

bash 复制代码
# 列出近 3 日内打开的文件夹,并全部打开

$recentFolderPath = [System.IO.Path]::Combine($env:APPDATA, 'Microsoft\Windows\Recent')
$cutoffDate = (Get-Date).AddDays(-3)

$recentLinks = Get-ChildItem -Path $recentFolderPath -Filter *.lnk -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -gt $cutoffDate }

$results = foreach ($link in $recentLinks) {
    try {
        $shell = New-Object -ComObject WScript.Shell
        $shortcut = $shell.CreateShortcut($link.FullName)
        $targetPath = $shortcut.TargetPath

        if ((Test-Path -Path $targetPath -PathType Container -ErrorAction SilentlyContinue)) {
            [PSCustomObject]@{
                FolderPath   = $targetPath
                LastAccessed = $link.LastWriteTime
            }
        }
    } catch {
        # 忽略无法解析的快捷方式
    }
}

$results = $results | Sort-Object LastAccessed -Descending

# 全部打开
foreach ($item in $results) {
    Write-Host "打开: $($item.FolderPath)"
    Invoke-Item -Path $item.FolderPath
}
相关推荐
秋天的怀念_David10 小时前
算法一千零一夜 · 第十七夜 长街点灯
java·程序人生·算法
可爱系程序猿19 小时前
佳能 MF645Cx Windows 11 驱动下载安装:UFR II 队列可打印但扫描入口缺失的排查
程序人生·电脑·1024程序员节
郝学胜-神的一滴1 天前
游戏设计:原型与开发 11:用概率与电子表格搞定骰子系统
程序人生·游戏·游戏策划·1024程序员节·游戏设计
JoePotter1 天前
Restic 备份工具使用指南(Windows Server 2019 适配版)
powershell·数据备份·windows server·运维自动化·restic
burg_xun2 天前
【生命科学 Agent】推理平台(二)
人工智能·程序人生·系统架构
可爱系程序猿2 天前
nvcuvid.dll 加载失败定位:CUDA 视频解码、驱动接口与进程位数逐项核查
运维·服务器·程序人生·电脑·音视频
syagain_zsx3 天前
BRpc 二次封装:Channel 管理、服务管理与回调工厂
c++·学习·程序人生·rpc·谷歌
可爱系程序猿3 天前
OpenCV 项目启动时报 opencv_world480.dll:先核对构建与架构
人工智能·opencv·程序人生·架构·电脑
Pin_Qing4 天前
缓存能活多久,现在是个要算的参数
java·大数据·开发语言·人工智能·程序人生
Codiggerworld4 天前
从“装一套协议”到“扔进终端”:MCP 与 CLI 的 Agent 工具层之争
人工智能·程序人生·ai编程