PowerShell 尋找意外的雙檔案副檔名

PowerShell 尋找意外的雙檔案副檔名

我有一些使用者偶爾會不小心將檔案副檔名雙重附加到檔案中,並且一直在嘗試找出如何在 powershell 中編寫此腳本。

EG 使用者將檔案命名為“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)"}

相關內容