Tenho alguns usuários que ocasionalmente acrescentam acidentalmente uma extensão de arquivo a um arquivo e estão tentando descobrir como criar um script para isso no PowerShell.
Por exemplo, o usuário nomeia um arquivo como "document123.docx.docx", mas eles têm extensões de arquivo visíveis desativadas em sua máquina, então assumem que o nome do arquivo é "document123.docx" Como posso pesquisar por extensões de arquivo duplamente anexadas para que isso possa ser facilmente identificado?
Isso afeta apenas o código do programa que espera que o arquivo exato seja denominado "document123.docx" e, como não existe, não é possível continuar.
Responder1
Para encontrar arquivos com a mesma extensão duplicada, tente:
Get-ChildItem -Path .\* -Recurse -File |
Where-Object{$_.Extension -and $_.BaseName -like "*$($_.Extension)"}
Para remover automaticamente a extensão duplicada:
Get-ChildItem -Path .\* -Recurse -File |
Where-Object{$_.Extension -and $_.BaseName -like "*$($_.Extension)"}|
Rename-Item -NewName {$_.BaseName} -WhatIf
Se a saída parecer OK, remova o final-WhatIf
Responder2
O script funcionaria bem se eu estivesse em uma pasta que eu quisesse verificar, mas ao verificar em C:\, ocorreria um erro e seria encerrado porque não teria direitos suficientes para ser executado como Admin quando atingisse algumas pastas aninhadas dentro de C: \Windows então excluí essa pasta e, para suprimir erros que não existiam, adicionei a opção continuar silenciosamente como abaixo.
Get-ChildItem -Path .\* -Recurse -File -Exclude "C:\Windows\" -EA SilentlyContinue|
Where-Object{$_.Extension -and $_.BaseName -like "*$($_.Extension)"}