1

Я написал строку PowerShell непосредственно в PowerShell, и она отлично работает, но я не могу получить .bat для ее запуска.

Я думаю, что мой сценарий PowerShell заблокирован корпорацией.

Если я смогу получить тот же результат в CMD, то это решит эту проблему.

Вот код PowerShell:

CD C:\Temp

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

Этот код берет PLANVIEW-Layout1.pdf и превращает его в PLANVIEW.pdf, но при этом он принимает любое имя файла с -Layout1 и удаляет -Layout1.

Мои программы CAD создают файлы .pdf при добавлении «-Layout1» или «-Model1» к имени файла.

Я иногда создаю сотни PDF-файлов и переименовываю их все по одному, это боль.

Приведенный выше код PowerShell отлично работает, если я наберу его в окне PowerShell.

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

РЕДАКТИРОВАТЬ: Извините за грязные комментарии ... Когда я запускаю этот .bat:
@echo off PowerShell.exe -noexit -ExecutionPolicy Bypass -File "MyScript.ps1" Pause
с MyScript.ps1:
CD C:\Temp Get-ChildItem -Filter "*-Layout1*" -Recurse | Rename-Item -NewName {$_.name -replace ‘-Layout1’,'' }

Теперь я получаю это в CMD:

You must provide a value expression on the right-hand side of the '-replace' operator. At C:\Temp\MyScript.ps1:3 char:85 * Get-ChildItem -Filter "-Layout1" -Recurse | Rename-Item -NewName {$_.name -replace <<<< a?~-Layout1a?T,'' } + CategoryInfo :ParserError: (:) []. ParentContainsErrorRecordException + FullyQualifiedErrorId :ExpectedValueExpression

1 ответ1

0

Что касается вывода ошибок и кода ps1, кажется, что "'" кавычка вокруг -Layout1' не распознается хорошо.

Вы можете попытаться заменить их простыми кавычками:

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

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