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.
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
.ps1
arquivo:Então, na sua área de trabalho:
New >
->Shortcut
PowerShell -File '<path to .ps1 file>'
Next
, nomeie-o como quiser eFinish
.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:
Get-ChildItem -Path $DataPath -Directory -Recurse -Depth 1
Name
para selecionar apenas as pastas denominadas "2024" (a pasta da empresa pode ser acessada como uma propriedade desta pasta)where name -eq '2024'
[Bool](Get-ChildItem -File)
é falso se a pasta não contiver arquivos)where {Get-ChildItem $_.FullName -File}
...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:
Attributes
coluna 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: