PowerShell 查找意外的双重文件扩展名

PowerShell 查找意外的双重文件扩展名

我有一些用户偶尔会意外地将文件扩展名重复附加到文件中,并且一直在尝试弄清楚如何在 powershell 中编写脚本。

例如,用户将文件命名为“document123.docx.docx”,但他们的机器上禁用了可见的文件扩展名,因此他们假定文件名是“document123.docx”我如何搜索双附加文件扩展名以便轻松识别?

这只会影响期望精确文件名为“document123.docx”的程序代码,由于该文件不存在,因此无法继续。

答案1

要查找具有相同扩展名的文件,请尝试:

Get-ChildItem -Path .\* -Recurse -File | 
    Where-Object{$_.Extension -and $_.BaseName -like "*$($_.Extension)"}

要自动删除双重扩展:

Get-ChildItem -Path .\* -Recurse -File | 
    Where-Object{$_.Extension -and $_.BaseName -like "*$($_.Extension)"}|
        Rename-Item -NewName {$_.BaseName} -WhatIf

如果输出看起来正常,请删除尾随的-WhatIf

答案2

如果我位于想要检查的文件夹中,该脚本将正常工作,但是当我从 C:\ 检查时,它会出错并退出,因为当它到达 C:\Windows 内的某些嵌套文件夹时,它没有足够的权限,即使以管理员身份运行,所以我排除了该文件夹,然后为了抑制非退出错误,我添加了如下所示的静默继续选项。

Get-ChildItem -Path .\* -Recurse -File -Exclude "C:\Windows\" -EA SilentlyContinue| 
    Where-Object{$_.Extension -and $_.BaseName -like "*$($_.Extension)"}

相关内容