Я написал строку 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