Powershell, Ersetzen von Zeichenfolgen in ini-Datei
Hallo,
ich habe ein kleines Problem und komme einfach nicht weiter (mir fehlen detaillierte Kenntnisse).
Folgendes Problem:
In einer ini-Datei steht folgende Zeichenfolge.
<Mode Value="1" />
Diese Zeichenfolge soll ersetzt werden.
<Mode Value="2" />
Wenn ich die Powershell aufrufe, kann durch folgenden Aufruf die Zeichenfolge ersetzt und z. B. in eine neue Datei geschrieben werden
Get-Content "D:\Downloads\Batch\test.ini" | Foreach-Object {$_.Replace('Mode Value="1','Mode Value="2')} | Set-Content "D:\Downloads\BATCH\temp.ini"
Mir gelingt es leider nicht durch den Aufruf in einer Kommandozeile oder Bach-Datei die Änderung durchzuführen:
Die beiden Aufrufe werden zwar durchgeführt, in der neuen Datei steht aber nur die alte Zeichfolge <Mode Value="1" />.
powershell -command "& {Get-Content "D:\Downloads\Batch\test.ini" | Foreach-Object {$_.Replace('Mode Value="1','Mode Value="2')} | Set-Content "D:\Downloads\BATCH\temp.ini"}"
powershell -command "& Get-Content "D:\Downloads\Batch\test.ini" | Foreach-Object {$_.Replace('Mode Value="1','Mode Value="2')} | Set-Content "D:\Downloads\BATCH\temp.ini""
Anmerkung:
Da in der ini-Datei noch andere Zeichenfolgen mit <xxx Value ="1" /> enthalten sind, reicht der einfache Austausch von "1" durch "2" nicht aus.
Kann mir jemand helfen?
Gruß
Peter
ich habe ein kleines Problem und komme einfach nicht weiter (mir fehlen detaillierte Kenntnisse).
Folgendes Problem:
In einer ini-Datei steht folgende Zeichenfolge.
<Mode Value="1" />
Diese Zeichenfolge soll ersetzt werden.
<Mode Value="2" />
Wenn ich die Powershell aufrufe, kann durch folgenden Aufruf die Zeichenfolge ersetzt und z. B. in eine neue Datei geschrieben werden
Get-Content "D:\Downloads\Batch\test.ini" | Foreach-Object {$_.Replace('Mode Value="1','Mode Value="2')} | Set-Content "D:\Downloads\BATCH\temp.ini"
Mir gelingt es leider nicht durch den Aufruf in einer Kommandozeile oder Bach-Datei die Änderung durchzuführen:
Die beiden Aufrufe werden zwar durchgeführt, in der neuen Datei steht aber nur die alte Zeichfolge <Mode Value="1" />.
powershell -command "& {Get-Content "D:\Downloads\Batch\test.ini" | Foreach-Object {$_.Replace('Mode Value="1','Mode Value="2')} | Set-Content "D:\Downloads\BATCH\temp.ini"}"
powershell -command "& Get-Content "D:\Downloads\Batch\test.ini" | Foreach-Object {$_.Replace('Mode Value="1','Mode Value="2')} | Set-Content "D:\Downloads\BATCH\temp.ini""
Anmerkung:
Da in der ini-Datei noch andere Zeichenfolgen mit <xxx Value ="1" /> enthalten sind, reicht der einfache Austausch von "1" durch "2" nicht aus.
Kann mir jemand helfen?
Gruß
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1133075166
Url: https://administrator.de/contentid/1133075166
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
4 Kommentare
Neuester Kommentar
Doppelte Anführungszeichen innerhalb von doppelten Anführungszeichen müssen wie auch in so ziemlich jeder Scriptsprache also auch in ner Batch "escaped" werden in der CMD wäre das hier der Backslash ...
Aber Ini-Dateien sollte man wenn möglich mit den richtigen Methoden behandeln und nicht einfach String-Replaces machen, denn Werte könnten ja in anderen Abschnitten doppelt vorkommen:
Powershell to/from INI Files
powershell -EP Bypass -c "Get-Content 'D:\Downloads\Batch\test.ini' | Foreach-Object {$_.Replace('Mode Value=\"1\"','Mode Value=\"2\"')} | Set-Content 'D:\Downloads\BATCH\temp.ini'"
Powershell to/from INI Files