Я написав рядок 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".
Я іноді створюю 100 PDF-файлів, і перейменувати їх по черзі - це біль.
Код PowerShell вище працює ідеально, якщо я введіть його у вікні PowerShell.
Я хочу, щоб і інші користувачі могли це використовувати, не вводячи весь код кожен раз.
EDIT: Вибачте за брудні коментарі ... Коли я запускаю це .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
ExecutionPolicy
: technet.microsoft.com/en-us/library/ee176961.aspx . Ви також можете зберегти та виконати лінію через.ps1
.