PowerShell para encontrar extensões de arquivo duplas acidentais

PowerShell para encontrar extensões de arquivo duplas acidentais

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)"}

informação relacionada