Файли PowerShell & Batch


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".

Я іноді створюю 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.
корінь

Перечитавши вашу початкову публікацію, я бачу, що "корпоратив", можливо, щось заблокував. SuperUser зазвичай не дозволяє теми, пов'язані з корпоративними мережами.
корінь

Я думаю, що це запуск сценарію до PowerShell. не використовувати .bat взагалі або взагалі не використовувати PowerShell. Я маю схвалення намагатися створити сценарій, який я намагаюся створити, я просто не можу отримати частину автоматизації. У мене є робочий код і можу запустити його в моєму PowerShell. Якщо я можу змусити його працювати на CMD замість цього, мені не доведеться турбуватися про ExecutionPolicy. Просто PowerShell & CMD - це різні мови.
Крістофер

Не публікуйте у коментарях фрагменти коду та величезні повідомлення про помилки. Використовуйте замість цього посилання для редагування, щоб покращити своє запитання.
JosefZ

Відповіді:


0

Щодо виводу помилок та коду ps1, то, здається, що цитата "" "навколо" -Layout1 "не розпізнається добре.

Ви можете спробувати замінити їх простими цитатами:

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

Це було все. Я не можу повірити, що це було так просто. Код PowerShell, введений безпосередньо в PowerShell, працює, але його потрібно було змінити, щоб перейти з пакетного файлу. У мене так багато, щоб навчитися. Дуже дякую за допомогу!
Крістофер

Найдивніше ... Я повернувся, щоб перевірити це, повертаючи "назад", і це працює і зараз. Я, мабуть, збожеволів. Але я буду тримати це, як ви запропонували, і бігти звідти. Знову дякую. Я ціную всіх ваших пацієнтів.
Крістофер

Що ж, якщо код у блоці запитань буквальний, то видно, що це були не апострофи, а задні посилання. Вони схожі на око, але мають зовсім різні символи ... так само, як і мінусові знаки та текстові тире, які часто спричиняють проблеми в кодах, написаних текстовими процесорами, які мислять завжди в unicode замість текстових редакторів.
Гомбай Сандор
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.