가끔 실수로 파일 확장자를 파일에 두 번 추가하는 일부 사용자가 있으며 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)"}