У меня есть пакетный скрипт, который вызывает команду powershell gc, и я не могу его исправить.
Это настоящий скрипт:
powershell -Command "(gc 'C:\test\run.bat') -replace '_installdir_', 'C:\Program Files\MySoftware'| Out-File -encoding ASCII C:\test\run.bat"
Так что мойСценарий просто меняет слово installdir на другую строку (C: \ Program ....) внутри файла, указанного в моем gc
(так как оно совпадает с выводом).
Он отлично работает, но когда я пытаюсь сделать его универсальным для повторного использования, я сделал следующее:
powershell -Command "(gc '%1%') -replace '%2%', '%3%' | Out-File -encoding ASCII %1%"
Всякий раз, когда я выполняю его, независимо от того, что я передал как аргументы, у меня возникает эта проблема:
powershell -Command "(gc 'C:\test\run.bat231"
The string is missing the terminator: '.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
Мой первый параметр в этом случае был C:\test\run.bat
, такой же, какой я использовал в предыдущей версии.Я назвал так:
myscript.bat C:\test\run.bat aa bb
Обс .: Я поместил бессмысленные аргументы во второй и третий, чтобы выделить проблему в первом.
Но я понятия не имеюпочему он не работает, и откуда он берет это "231" в конце.