Удаление определенного слова в имени файла - PullRequest
1 голос
/ 23 октября 2019

Я хотел бы удалить слово «.pdf» в имени файла. Это не расширение файла, как я назвал его ранее как «.pdf». Как мне удалить его со всех файлов? Мои файлы находятся во многих папках в основной папке.

C: \ MainFolder \ Folder1 \ document.pdf

C: \ MainFolder \ Folder2 \ document

C: \ MainFolder \ Folder3 \ document.pdf

Get-ChildItem | Rename-Item -NewName { $_.BaseName.Replace(“.pdf”,””) + $_.Extension }

Я пытался использовать это, но он удаляется только в самой папке. Мне нужно сделать это для всех папок

Ответы [ 3 ]

1 голос
/ 23 октября 2019

Это должно сработать:

    $files = Get-ChildItem 'C:\mypath' -Recurse

    foreach( $file in $files ) {

    if( !$file.PSIsContainer ) {

        $extension = $file.Extension
        $newname   = $file.BaseName.Replace('.pdf', '' ) + $extension
        Rename-Item -Path $file.FullName -NewName $newname | Out-Null
    }

}
0 голосов
/ 23 октября 2019

Как Филбурт указывает в комментарии к вопросу, единственное, чего не хватает в вашей команде - это -Recurse переключатель для обработки файлов во всем поддереве каталогапуть ввода.

Кроме того, для безопасности добавьте переключатель -File, чтобы ограничить обработку файлами (а не каталогами):

Get-ChildItem -Recurse -File |
  Rename-Item -NewName { $_.BaseName.Replace('.pdf', '') + $_.Extension } -WhatIf

Общий параметр -WhatIf предварительный просмотр операции. Удалите его, если вы уверены, что он будет делать то, что вам нужно.

Обратите внимание, что файлы, базовые имена которых не содержат подстроку .pdf, эффективно игнорируются.

Для ускоренияпри обработке Get-ChildItem можно предварительно выбрать интересующие файлы с помощью
-Filter *.pdf?*

0 голосов
/ 23 октября 2019

Замените свой код следующим:

#Finds all files with the string “pdf” anywhere in the name recursively and will replace with nothing(which will remove basically).
Get-ChildItem -Path C:\your\root\folder\path -Filter "*pdf*" -Recurse  | Rename-Item -NewName {$_.Name -replace "pdf",''}

Надеюсь, это поможет.

...