从最近的文件中排除文件夹

从最近的文件中排除文件夹

Windows 10 在资源管理器中显示最近文件列表。是否可以(递归地)排除某些文件夹不显示在此列表中?

答案1

这个问题也困扰着我。结果发现,这个问题非常简单。请耐心等待。

您让 Windows 在最近列表中拾取不需要的文件和/或文件夹,然后转到快速访问(确保显示最近的文件和文件夹!),只需右键单击并删除即可。然后就好了 -Windows 永远不会再将相同的文件或文件夹添加到任何最近文件列表中。永远不会。它们甚至不会出现在 Windows 资源管理器的右键菜单中。 从快速访问中删除

Folder Options / General如果您清除文件资源管理器历史记录 ( ),Windows 中的自动全局“禁止列表”将被重置

现在我想知道是否可以以某种方式手动编辑此“禁止列表”,并向其中添加文件夹。我还没想出办法做到这一点。

答案2

没有内置功能可以将文件夹及其所有文件和子文件夹从“最近项目”中排除。事后您只能隐藏单个文件,并且从“快速访问”中删除文件夹不会阻止其中包含的文件被添加到“最近项目”中。

为了解决 Windows 的这个限制,Bitsum 开发了一款名为最近文件排除。它的工作原理是监控最近的项目列表并实时删除排除的文件。

答案3

直接从文件资源管理器(shell:recent在地址栏中浏览文件夹):只需使用窗口右上角的搜索框并输入类似

  • -linktarget:d:\bat\隐藏d:\bat\文件夹中所有文件/文件夹的链接,即匹配d:\bat\*标准;
  • -linktarget:d:\bat\a隐藏所有符合d:\bat\a*条件的文件/文件夹的链接;
  • -linktarget:"d:\bat\a b"(注意带空格的路径要用双引号引起来);
  • -(kind:Link;Folder linktarget:"d:\bat\a b)"(仅隐藏文件夹但显示文件)。

资源:

Microsoft Windows 桌面搜索 (WDS) 使用高级查询语法 (AQS) 来帮助用户和程序员更好地定义和缩小搜索范围。使用 AQS 是一种缩小搜索范围并提供更好结果集的简单方法。可以通过以下参数缩小搜索范围:

  • 文件种类:文件夹、文档、演示文稿、图片等。
  • 文件存储:特定的数据库和位置。
  • 文件属性:大小、日期、标题等。
  • 文件内容:关键字,例如“项目可交付成果”、“AQS”、“蓝色绒面鞋”等。

此外,可以使用搜索运算符组合搜索参数......


说实话,我不知道有什么方法可以阻止创建指向shell:recent文件夹中特定项目的链接。但是,如果你想删除尽快从那里找到特定的链接,然后根据您的目的调整接下来的任何脚本(请记住shell:recent文件夹中的文件都是链接(快捷方式):

答案4

这个 PowerShell 对我来说非常有用。

  • 您可以设置要监控的路径列表。
  • 该脚本将进行初步清理,然后继续监控以删除任何新文件。
  • 您可以设置任务计划程序以便在每次登录时运行它。
  • 如果您需要一次性清理,只需删除最后 3 行。
# Paths to monitor
$targetPaths = @(
    "c:\users\user\videos",
    "c:\users\user\photos"
    # Add more as needed
)

$recentFolder = [System.IO.Path]::Combine($env:APPDATA, 'Microsoft\Windows\Recent')

function DeleteItem($itemPath) {
    Write-Host "Deleting item: $itemPath"
    Remove-Item -LiteralPath $itemPath -Force
}

# Delete existing shortcuts on init
Get-ChildItem -Path $recentFolder -Filter "*.lnk" | ForEach-Object {
    $link = (New-Object -ComObject WScript.Shell).CreateShortcut($_.FullName)
    foreach ($targetPath in $targetPaths) {
        if ($link.TargetPath -like "$targetPath\*") {
            DeleteItem $_.FullName
            break
        }
    }
}

# FileSystemWatcher to monitor changes in the folder
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $recentFolder
$watcher.Filter = "*.lnk" # Monitor only shortcut files

# Event action
$action = {
    $file = $Event.SourceEventArgs.FullPath
    Write-Host "Shortcut detected: $file"

    $link = (New-Object -ComObject WScript.Shell).CreateShortcut($file)
    foreach ($targetPath in $targetPaths) {
        if ($link.TargetPath -like "$targetPath\*") {
            DeleteItem $file
            break  # Break out of the loop if a match is found
        }
    }
}

# Register events
Register-ObjectEvent $watcher 'Created' -Action $action
Register-ObjectEvent $watcher 'Changed' -Action $action

Write-Host "Monitoring shell:recent"

while ($true) {
    Start-Sleep -Seconds 5
}

相关内容