Möchten Sie wissen, wie man PowerShell verwendet, um eine Textdatei zu lesen und Text zu ersetzen? Dies wird als das Lesen von Textdateien in PowerShell bezeichnet.
Suchen Sie nicht weiter! Dieser Blog-Beitrag ist für Sie. Am Ende des Beitrags zeige ich Ihnen eine Funktion, die ich entwickelt habe, um Ihr Leben viel einfacher zu machen.
Das Ersetzen von Text in einer Datei mit PowerShell ist ein dreistufiger Prozess.
- Datei lesen
- Suchen und Ersetzen des Strings
- Änderungen in die Datei schreiben.
Datei lesen
Zuerst müssen Sie die Datei lesen. Erstellen wir zuerst eine Datei mit dem Befehl Set-Content
, damit wir eine zum Arbeiten haben.
Um diese Datei zu lesen, können Sie den Befehl Get-Content
verwenden. Sie können die Datei lesen, indem Sie einen Textdateipfad an den Parameter Path
übergeben, wie unten gezeigt.
Suchen und Ersetzen des Strings
Jetzt, da wir den Inhalt der Datei im Speicher als Zeichenfolge haben, müssen wir den String suchen und ersetzen. Eine Möglichkeit dies zu tun, ist die Verwendung des Operators -replace
. Dieser PowerShell-Operator findet eine Zeichenfolge und ersetzt sie durch eine andere.
Unter Verwendung des Beispielinhalts der Datei können wir den Suchstring foo und den Ersetzungsstring bar angeben, wodurch der Dateiinhalt jetzt foo foo baz wird.
In die Datei schreiben
Jetzt, da wir den neuen Dateiinhalt in $newContent
gespeichert haben, müssen wir diesen neuen Inhalt jetzt in die Datei schreiben. Eine Möglichkeit dies zu tun ist die Verwendung des Befehls Set-Content
.
Der Befehl Set-Content
ersetzt den gesamten Inhalt einer Datei durch eine neue Zuweisung.
Wenn Sie nun die Datei C:\file.txt mit dem Befehl Get-Content
lesen, sehen Sie, dass sie nun den neuen Inhalt enthält.
Umgang mit geöffneten Dateigriffen
Die Schritte, die Sie zuvor durchlaufen haben, funktionieren… meistens. In der realen Welt stellt sich jedoch manchmal heraus, dass es nicht immer so läuft.
Sie werden feststellen, dass Sie gelegentlich mit Dateien umgehen müssen, die entweder von PowerShell selbst geöffnet sind. Dadurch wird verhindert, dass Sie den neuen Inhalt zurück in die Datei schreiben können.
Um diese Situation mit dem geöffneten Dateigriff zu beheben, habe ich einen einfachen Arbeitsablauf erstellt, der es Ihnen ermöglicht, zunächst eine temporäre Textdatei auf der Festplatte mit dem neuen Inhalt zu erstellen, die Originaldatei zu entfernen und dann die temporäre Datei umzubenennen.
Hier ist ein Beispiel, wie es funktioniert:
Unten finden Sie ein Beispiel für eine von mir erstellte Funktion namens Find-InTextFile
, die diesen Ansatz in Verbindung mit der Möglichkeit verwendet, Text in einer Datei zu suchen (nicht zu ersetzen).
Diese Funktion verwendet auch die leistungsstärkere Syntax für reguläre Ausdrücke, um Zeichenketten zu suchen. Sie werden feststellen, dass reguläre Ausdrücke Ihnen ermöglichen, flexibler zu suchen, indem Sie Sonderzeichen wie einfache Anführungszeichen, Sonderzeichen und mehr verwenden.
Sie können auch unten sehen, dass ich eine foreach-Schleife verwende, um mehrere Dateien gleichzeitig zu verarbeiten. Dies ist praktisch, wenn Sie eine Reihe von Dateien verarbeiten müssen.
Ressourcen
Für weitere Informationen zum Set-Content
-Befehl, schauen Sie sich Set-Content: Der PowerShell-Weg, um in eine Datei zu schreiben oder eine alternative Möglichkeit, Inhalte in eine Datei zu schreiben, den Out-File
-Befehl an.
Source:
https://adamtheautomator.com/powershell-read-text-file/