AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1826477
Accepted
Tim
Tim
Asked: 2024-01-19 21:51:10 +0800 CST2024-01-19 21:51:10 +0800 CST 2024-01-19 21:51:10 +0800 CST

有没有办法制作一个“智能”桌面对象来过滤特定目标文件夹的子文件夹是否包含某个子文件夹?

  • 772

假设 Windows 10 中有以下文件夹层次结构:

  data
    acme widgets
       2022
       2023
       2024
    gizmos
        2023
    etc1
    etc2
    ...
    etc999

层次结构中的“acme widgets”和“gizmos”级别有数百个同级文件夹,其中一些将包含 2024 文件夹,如acme widgets,而另一些则不会,如gizmos。但那些没有2024文件夹的人有时会将其添加到其子文件夹中,并且有时会将一个或多个文件添加到2024文件夹中。那时我需要采取一些行动。

因此,我希望能够单击一个桌面图标,该图标仅显示文件夹数据下包含2024子文件夹(其中包含一个或多个文件)的文件夹列表(最好是可导航的文件夹列表)。无法预测这些文件的名称。使用Power Shell可以创建这样的智能桌面图标吗?如果是,我需要加快哪些功能(即命令名称)?

FWIW,我正在处理存储在由其他人维护的层次结构中的文件夹和文件,他们不会让我知道何时在这些子文件夹之一中创建了 2024 年文件夹或何时添加了文件到它。

我不想向文件夹层次结构添加任何类型的“侦听器”;只需某种过滤机制就足够了。

windows-10
  • 1 1 个回答
  • 61 Views

1 个回答

  • Voted
  1. Best Answer
    Keith Miller
    2024-01-23T02:29:21+08:002024-01-23T02:29:21+08:00

    在PowerShell中,定义搜索相对简单。为了将结果合并到可浏览的集合中,我喜欢使用文件夹快捷方式,这是一种仅 shell 目录连接,其行为类似于真正的文件夹。

    编辑:解释遵循下面的代码和说明

    将代码复制到记事本中并另存为.ps1文件:

    $DataPath     = 'C:\Path\to\Data'
    $filteredPath = "$env:Temp\FiiteredData"
    # Start fresh each run
    If (Test-Path $filteredPath) {
        Remove-Item $filteredPath -Recurse -Force
    }
    mkdir $FilteredPath | out-null
    
    Get-ChildItem -Path $DataPath -Directory -Recurse -Depth 1 |
      where name -eq '2024' | where {Get-ChildItem $_.FullName -File} | ForEach-Object {
        # Setting the ReadOnly attribute for a folder enables desktop.ini processing 
        ($newFolder                = mkdir (Join-Path $FilteredPath $_.Parent.Name)).Attributes += 'ReadOnly'
        $TargetShortcut            = (New-Object -com wscript.shell).CreateShortcut("$NewFolder\Target.lnk")
        $TargetShortcut.TargetPath = $_.Parent.FullName
        $TargetShortcut.Save()
        # Tells the shell to link to the contents of Target.lnk
        "[.ShellClassInfo]`nCLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}`nFlags=2`n`n" | Set-Content "$newFolder\desktop.ini"
    }
    # Open EXplorer to our folder populated with folder shortcuts
    Invoke-Item $FilteredPath
    
    

    然后,在您的桌面上:

    1. 右键单击,New >->Shortcut
    2. 类型PowerShell -File '<path to .ps1 file>'
    3. 单击Next,将其命名为您喜欢的名称,然后Finish。

    注意:如果您从未在计算机上运行过PowerShelll脚本,则可能需要修改ExecutionPolicy。为此,请打开 Windows PowerShell 控制台并键入:

    • Set-ExecutionPolicy RemoteSigned

    现在就可以走了。


    逻辑:

    • 获取顶级文件夹(公司名称)及其子文件夹(年份)的 Directeryinfo 对象
      • Get-ChildItem -Path $DataPath -Directory -Recurse -Depth 1
    • 过滤Name以仅选择名为“2024”的文件夹(公司文件夹可以作为该文件夹的属性进行访问)
      • where name -eq '2024'
    • 然后根据它们是否包含任何文件来过滤它们([Bool](Get-ChildItem -File)如果文件夹不包含文件则为 false)
    • where {Get-ChildItem $_.FullName -File}
    • 当文件夹满足过滤条件时,创建其父文件夹(公司名称)的文件夹快捷方式

    ...什么是文件夹快捷方式?

    Windows Shell 的最佳技巧之一。在文件系统级别,它由一个文件夹组成,该文件夹的名称将是快捷方式的显示名称。该文件夹包含两个文件,一个“Target.lnk”文件,它是目标文件夹的“普通”快捷方式,另一个是带有神奇咒语的“desktop.ini”:

    [.ShellClassInfo]
    CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
    Flags=2
    
    • 除非设置了文件夹的 ReadOnly 属性,否则 shell 不会处理文件夹的desktop.ini 文件。它只能通过代码设置或清除,而不能通过“属性”对话框中的误导性复选框来设置或清除。它的状态只能通过代码或AttributesEXplorer 详细信息视图中的列来访问,而不能通过“属性”对话框中的误导性复选框来访问。

    设置该属性后,文件夹将显示目标文件夹的内容,就好像它是它自己的内容一样——命名空间连接。请注意,可以删除快捷方式本身,而不会影响目标的内容,但快捷方式的内容就是目标的内容——从任一位置创建、编辑和删除项目将在另一个位置看到,因为它们是目标的内容。相同的项目。

    参考文献:

    • 创建快捷方式
    • 2

相关问题

  • VMware Workstation USB 仲裁服务无法自动启动

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 资源管理器侧面板中的桌面外壳快捷方式

  • 为什么我不能将文件从 Android 发送到 Windows 10?

  • 在多个文件上打开方式?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Vickel Firefox 不再允许粘贴到 WhatsApp 网页中? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve