ОК, во-первых, спасибо nex84 за ответ на мой последний вопрос и всем тем, кто высказал свое мнение по этой ссылке https://superuser.com/a/1051727/569550...

Теперь у меня есть новый вопрос, но он связан с тем же кодом, что и в ссылке.

Я создал скрипт, который удалит текст из имени файла и заменит его новым текстом или пробелом.

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

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

Приведенный ниже код работает для удаленного, но когда происходит переименование в сценарии, к имени файла добавляется «$ Rename» вместо того, что вводит пользователь.

Пример: если пользователь удалил «-Layout1», но добавил «-Model» к имени файла, мы получили:

BLABLA-Layout1.pdf ==>  BLABLA$Replace.pdf

Код:

CD C:\TempPDF 
$Filter = Read-Host -Prompt 'Input Text To Be Removed' 
$Rename = Read-Host -Prompt 'Input Text To Be Added' 
Write-Host "You input server '$Filter' and '$Rename'" 
Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter",'$Rename' }

1 ответ1

1

Одиночные кавычки в Powershell ограничивают только строковые значения. В этом случае используйте двойные кавычки при передаче переменной $ Rename имени файла.

Get-ChildItem -Filter "*$Filter*" -Recurse | Rename-Item -NewName {$_.name -replace "$Filter","$Rename" }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .