Windows 10 在资源管理器中显示最近文件列表。是否可以(递归地)排除某些文件夹不显示在此列表中?
答案1
答案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
文件夹中的文件都是链接(快捷方式):
- 如何在每次将文件添加到文件夹时自动运行脚本?(VBScript);
- 使用 PowerShell 监视新文件的创建;
答案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
}