Невозможно переименовать файлы в подкаталогах с помощью элемента переименования в расположении общей папки в Synology - PullRequest
0 голосов
/ 19 мая 2018

У меня есть несколько .mkv файлов на NAS-устройстве Synology в подкаталогах общей папки с добавленным в конце следующим расширением .partial~.

Я пытаюсь удалить .partial~ изконец этих файлов, и игнорируйте все другие файлы, расположенные внутри, такие как .jpg

Папка \ Структура файла Например:

\\ NAS \ SharedFolder \ Subdirectory1 \ Subdirectory2 \ file.mkv.partial ~

\\ NAS \ SharedFolder \ Subdirectory1 \ file.mkv.partial ~

\\ NAS \ SharedFolder \ Subdirectory1 \ file.jpg

Я создал следующий сценарий powershell strippartialext.ps1, который работает правильно при запуске на моем компьютере с Windows 10 из Подкаталога 1 или Подкаталога 2:

\\ NAS \ SharedFolder \ Subdirectory1 \ strippartialext.ps1 [РАБОТАЕТ ЗДЕСЬ]

\\ NAS \ SharedFolder \ Subdirectory1 \ Subdirectory2 \ strippartialext.ps1 [РАБОТАЕТ ЗДЕСЬ]

Он удаляет все, что ниже (или в подкаталогах ниже), но не работает при запускес вершины SharedFoМестоположение lder:

\\ NAS \ SharedFolder \ strippartialext.ps1 [НЕ РАБОТАЕТ ЗДЕСЬ]

Get-ChildItem -File -Recurse | % { Rename-Item -Path $_.PSPath -NewName $_.Name.replace(".partial~","")}

Я получаю следующие ошибки при запуске файла .ps1из расположения SharedFolder:

Переименовать-элемент: невозможно переименовать, поскольку элемент в «Microsoft.PowerShell.Core \ FileSystem :: \ NAS \ sharedfolder \ Sub Directory1 \ file.jpg» не существует.В \ NAS \ sharedfolder \ strippartialext.ps1: 1 char: 36 + ... curse |% {Rename-Item -Path $ .PSPath -NewName $ .Name.replace (". Pa ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CategoryInfo: InvalidOperation: (:) [Rename-Item], PSInvalidOperationException + FullyQualifiedErrorId: InvalidOperation, Microsoft.PowerShell.Commands.RenameItemCommand

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

1 Ответ

0 голосов
/ 19 мая 2018

Командлет Rename-Item принимает ввод по каналу, поэтому я бы попробовал:

Get-ChildItem -File -Recurse "*.partial~" | 
    Rename-Item -NewName {$_.Name.replace(".partial~","")} -WhatIf

Если вывод выглядит нормально, удалите hte -WhatIf

...