AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 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

Existe uma maneira de criar um objeto de área de trabalho "inteligente" que filtre os filhos de uma pasta de destino específica para saber se eles contêm uma determinada subpasta?

  • 772

Digamos que temos a seguinte hierarquia de pastas no Windows 10:

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

Existem centenas de pastas irmãs no nível "acme widgets" e "gizmos" na hierarquia, algumas das quais conterão uma pasta 2024, como acme widgets , e outras não, como gizmos . Mas aqueles que não possuem uma pasta 2024 irão, em algum momento, adicioná-la às suas subpastas e, em algum momento, um ou mais arquivos serão adicionados à pasta 2024 . Nesse ponto, preciso tomar algumas medidas.

Então, eu gostaria de poder clicar em um ícone na área de trabalho que exibe uma lista de pastas (de preferência navegável) apenas das pastas abaixo dos dados da pasta que contêm uma subpasta 2024 com um ou mais arquivos nela. Não há como prever como esses arquivos seriam nomeados. Um ícone tão inteligente na área de trabalho pode ser criado usando o Power Shell? Se sim, quais funções (ou seja, nomes de comandos) eu precisaria atualizar?

FWIW, estou trabalhando com pastas e arquivos armazenados em uma hierarquia que está sendo mantida por outra pessoa, e eles não me informam quando uma pasta 2024 foi criada em uma dessas pastas filhas ou quando os arquivos foram adicionados para isso.

Eu preferiria não adicionar nenhum tipo de "ouvinte" à hierarquia de pastas; apenas algum tipo de mecanismo de filtragem seria suficiente.

windows-10
  • 1 1 respostas
  • 61 Views

1 respostas

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

    No PowerShell , definir a pesquisa é relativamente trivial. Para consolidar os resultados em uma coleção navegável, gosto de usar atalhos de pasta, uma espécie de junção de diretório somente shell, que se comporta como uma pasta verdadeira.

    EDIT: A explicação segue o código e as instruções abaixo

    Copie o código no Bloco de Notas e salve como um .ps1arquivo:

    $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
    
    

    Então, na sua área de trabalho:

    1. Clique com o botão direito, New >->Shortcut
    2. TipoPowerShell -File '<path to .ps1 file>'
    3. Clique em Next, nomeie-o como quiser e Finish.

    Observação: se você nunca executou scripts do PowerShelll em sua máquina, provavelmente precisará modificar ExecutionPolicy . Para fazer isso, abra um console do Windows PowerShell e digite:

    • Set-ExecutionPolicy RemoteSigned

    e você está pronto para ir.


    A lógica:

    • Obtenha os objetos Directeryinfo para as pastas de nível superior (nome da empresa) e suas subpastas (ano)
      • Get-ChildItem -Path $DataPath -Directory -Recurse -Depth 1
    • Filtre Namepara selecionar apenas as pastas denominadas "2024" (a pasta da empresa pode ser acessada como uma propriedade desta pasta)
      • where name -eq '2024'
    • Em seguida, filtre-os com base no fato de conterem ou não arquivos ( [Bool](Get-ChildItem -File)é falso se a pasta não contiver arquivos)
    • where {Get-ChildItem $_.FullName -File}
    • Quando uma pasta atender aos critérios de filtro, crie um atalho de pasta para sua pasta pai (nome da empresa)

    ...e o que é um atalho de pasta?

    Um dos melhores truques do Windows Shell. No nível do sistema de arquivos, consiste em uma pasta cujo nome será o nome de exibição do atalho. A pasta contém dois arquivos, um arquivo "Target.lnk" que é um atalho "comum" para a pasta de destino, e um "desktop.ini" com o encantamento mágico:

    [.ShellClassInfo]
    CLSID2={0AFACED1-E828-11D1-9187-B532F1E9575D}
    Flags=2
    
    • O shell não processará o arquivo desktop.ini de uma pasta, a menos que o atributo ReadOnly da pasta esteja definido. Ele só pode ser definido ou desmarcado por meio de código, e não pela caixa de seleção enganosa na caixa de diálogo Propriedades. Seu status só pode ser acessado por meio de código ou Attributescoluna em uma visualização de detalhes do EXPlorer, e não pela caixa de seleção enganosa na caixa de diálogo Propriedades.

    Quando o atributo é definido, a pasta exibe o conteúdo da pasta de destino como se fosse sua própria – uma junção de namespace. Observe que o atalho em si pode ser excluído sem afetar o conteúdo do destino, mas o conteúdo do atalho é o conteúdo do destino - a criação, edição e exclusão de itens de qualquer local serão vistas no outro porque são os mesmo item.

    Referências:

    • Criar atalho
    • 2

relate perguntas

  • O serviço de arbitragem USB da estação de trabalho VMware não inicia automaticamente

  • Como ativar o sensor de impressão digital no domínio e no diretório ativo do Linux

  • atalho do shell da área de trabalho no painel lateral do explorer

  • Por que não consigo enviar arquivos do Android para o Windows 10?

  • Abrir com em vários arquivos?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve