Ersetzen des gleichen Symbols =
in einer Zeichenfolge durch Batch mithilfe von PowerShell
Nach der Prüfung und dann Forschung danach, kam ich auf diese Antwort auf Stackoverflow, die dann auch zu spitz diesen Thread und Beiträgen auf DosTips und Ersetzen der =
mit reiner Charge ist nicht einfach.
Wenn ich Probleme mit dem Batch-Scripting bekomme, bei denen eine Menge komplexer Batch-Logik erforderlich ist oder ich einfach nicht herausfinden kann, wie sie problemlos funktioniert, versuche ich normalerweise, PowerShell in den Mix zu integrieren, da sie Windows- nativ ist und sehr viel robuster sein kann als Charge ohne komplexe Logik.
Das untenstehende Batch-Skript wird im Wesentlichen:
- Verwenden Sie Get-Content und Replace, um die Zeichenfolge zu suchen und zu ersetzen
- Dann wird Set-Content verwendet, um die neu ersetzte Zeichenfolge entsprechend wieder in die Datei einzufügen
Skript
@echo off setlocal enableextensions disabledelayedexpansion set search=OutDir=bin set replace=OutDir=Build set textFile=%DOCUMENT%.txt :PowerShell SET PSScript=%temp%\~tmpStrRplc.ps1 ECHO (Get-Content "%~dp0%textFile%").replace("%search%", "%replace%") ^| Set-Content "%~dp0%textFile%">"%PSScript%" SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0 CD /D "%PowerShellDir%" Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'" EXIT
Ergebnis ausgeben
OutDir=Build