Как я могу использовать команду powershell для замены строки новой строкой? Из пакетного файла? -проблема с двойными кавычками

Желаемый результат - преобразовать все 5 тильд в новый символ строки.

Команда

Powershell (Get-Content -Raw allactsconv.txt) "-replace '~~~~~', "[\r\n]" | Out-File -FilePath allactsconv.txt -Force -Encoding ascii"

Он возвращается

    At line:1 char:55
+ (Get-Content -Raw allactsconv.txt) -replace '~~~~~', [\r\n] | Out-Fil ...
+                                                       ~
Missing type name after '['.
At line:1 char:53
+ (Get-Content -Raw allactsconv.txt) -replace '~~~~~', [\r\n] | Out-Fil ...
+                                                     ~
Missing expression after ','.
At line:1 char:54
+ (Get-Content -Raw allactsconv.txt) -replace '~~~~~', [\r\n] | Out-Fil ...
+                                                      ~~~~~~
Unexpected token '[\r\n]' in expression or statement.
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : MissingTypename

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

Лучшим решением было бы переписать весь пакетный файл (он делает много других вещей) в виде скрипта powershell, но, к сожалению, мне нужно исправить это сейчас. Когда-нибудь я это сделаю.

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


person Ne Mo    schedule 30.03.2021    source источник
comment
Это команда powershell.exe -c? Я не понимаю, почему у вас там "-replace.   -  person Santiago Squarzon    schedule 30.03.2021


Ответы (1)


Основываясь исключительно на строках, которые вы указали, что хотите заменить и хотите заменить их, я бы предложил следующие варианты:

Powershell -NoProfile "(Get-Content -Raw \".\allactsconv.txt\") -Replace \"~~~~~\", \"[`r`n]\" | Out-File -FilePath \".\allactsconv.txt\" -Force -Encoding ASCII"

Если вы предпочитаете использовать в PowerShell одинарные кавычки (не мое предпочтение), то:

Powershell -NoProfile "(Get-Content -Raw '.\allactsconv.txt') -Replace '~~~~~', '[`r`n]' | Out-File -FilePath '.\allactsconv.txt' -Force -Encoding ASCII"
person Compo    schedule 30.03.2021