Wie man einen Text in einer Datei mit PowerShell ersetzt
-
Verwenden Sie
Get-Content
undSet-Content
, um jede Instanz einer Zeichenfolge in einer Datei mit PowerShell zu ersetzen -
Verwenden Sie die
File
-Klasse, um jede Instanz einer Zeichenfolge in einer Datei mit PowerShell zu ersetzen - Ersetzen Sie jede Instanz einer Zeichenfolge in mehreren Dateien mit PowerShell
- Fazit

PowerShell ist ein leistungsstarkes Tool zur Verwaltung von Dateien und Ordnern. Es ermöglicht Ihnen, Dateien und Ordner im System zu erstellen, zu kopieren, zu löschen, zu verschieben, umzubenennen und anzuzeigen.
Dieses Tutorial stellt verschiedene Methoden vor, um jede Zeichenfolgeninstanz in einer Datei mit PowerShell zu ersetzen.
Verwenden Sie Get-Content
und Set-Content
, um jede Instanz einer Zeichenfolge in einer Datei mit PowerShell zu ersetzen
Der Befehl 'Get-Content'
ruft den Inhalt eines Elements im angegebenen Pfad ab, wie den Text in einer Datei. Das Cmdlet 'Set-Content'
ist ein Zeichenfolgenverarbeitungswerkzeug, mit dem Sie neuen Inhalt zu einer Datei hinzufügen oder vorhandenen Inhalt ersetzen können.
Sie können das Cmdlet Get-Content
und Set-Content
verwenden, um jede Zeichenfolgeninstanz in einer Datei zu ersetzen.
Syntax:
(Get-Content -Path 'Path\to\Your\File.txt') -Replace 'OldString', 'NewString' | Set-Content -Path 'Path\to\Your\File.txt'
In der Syntax ersetzen wir 'OldString'
durch die Zeichenfolge, die wir ersetzen möchten, und 'NewString'
durch die Zeichenfolge, die wir an deren Stelle setzen möchten. Stellen Sie sicher, dass Sie 'Path\to\Your\File.txt'
durch den tatsächlichen Pfad zu Ihrer Datei ersetzen.
Lassen Sie uns ein Beispiel geben. Wir haben eine Textdatei (test.txt
) im Verzeichnis (C:\New
) mit folgendem Inhalt.
Get-Content C:\New\test.txt
Ausgabe:
Welcome to Linux tutorials.
Linux is free.
Linux is powerful.
Jetzt ersetzen wir jede Instanz der Zeichenfolge 'Linux'
durch 'PowerShell'
in einer Datei test.txt
mit Hilfe des Parameters -Replace
. Die Klammern ()
sind um den Get-Content
erforderlich.
(Get-Content C:\New\test.txt) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt
Überprüfen Sie dann den Inhalt einer Datei test.txt
, um die Änderungen zu verifizieren.
Get-Content C:\New\test.txt
Wie Sie sehen können, wurde Linux
erfolgreich durch PowerShell
ersetzt.
Ausgabe:
Welcome to PowerShell tutorials.
PowerShell is free.
PowerShell is powerful.
Diese Methode verwendet ein Zeichenfolgenarray, um Zeichenfolgen in einer Datei zu finden und zu ersetzen, da das Cmdlet Get-Content
ein Array zurückgibt. Es ist einfacher, Zeichenfolgen zu ersetzen, wenn Get-Content
eine einzelne Zeichenfolge zurückgibt.
Wir können den Parameter -Raw
wie unten gezeigt verwenden. Der Parameter -Raw
wird verwendet, um sicherzustellen, dass der Inhalt von 'C:\New\test.txt'
als eine einzelne Zeichenfolge gelesen wird, wodurch eine effiziente Ersetzung von 'Linux'
durch 'PowerShell'
im gesamten Dateiinhalt ermöglicht wird.
(Get-Content C:\New\test.txt -Raw) -Replace 'Linux', 'PowerShell' | Set-Content C:\New\test.txt
In diesem Code lesen wir den Inhalt einer Datei, die sich unter 'C:\New\test.txt'
befindet, als eine einzelne Zeichenfolge. Dann verwenden wir den Operator -Replace
, um alle Instanzen von 'Linux'
durch 'PowerShell'
innerhalb dieser Zeichenfolge zu finden und zu ersetzen.
Schließlich speichern wir den modifizierten Inhalt zurück in die gleiche Datei, um sie effektiv mit dem neuen Text zu aktualisieren. Dieser Code ist eine unkomplizierte Möglichkeit, Textersetzungen in einer Datei mit PowerShell durchzuführen.
Verwenden Sie die File
-Klasse, um jede Instanz einer Zeichenfolge in einer Datei mit PowerShell zu ersetzen
Die File
-Klasse bietet statische Methoden für häufige Operationen wie das Erstellen, Kopieren, Verschieben, Öffnen, Löschen und Anhängen an eine einzelne Datei. Verwenden Sie die Methode Replace()
der File
-Klasse, um den Inhalt einer bestimmten Datei zu ersetzen.
Syntax:
$string = [System.IO.File]::ReadAllText("FilePath")
$string = $string.Replace("OldString", "NewString")
[System.IO.File]::WriteAllText("FilePath", $string)
Parameter:
"FilePath"
: Dies sollte durch den tatsächlichen Dateipfad ersetzt werden."OldString"
: Dies ist die Zeichenfolge, die Sie ersetzen möchten."NewString"
: Dies ist die Zeichenfolge, durch die Sie sie ersetzen möchten.
Die Methode ReadAllText()
öffnet eine Textdatei, liest allen Text in dieser Datei und schließt dann die Datei.
Die Methode WriteAllText()
erstellt eine neue Datei, schreibt die spezifische Zeichenfolge in die Datei und schließt die Datei. Sie wird überschrieben, wenn die Zieldatei bereits an dem Speicherort existiert.
Lassen Sie uns ein Beispiel geben. Wir haben eine Textdatei (python.txt
) im Verzeichnis (C:\New
) mit folgendem Inhalt.
Get-Content C:\New\python.txt
Ausgabe:
Find the best Python tutorials and learn Python easily from DelftStack.
Jetzt ersetzen wir jede Instanz einer Zeichenfolge in einer Datei mithilfe der Methode der File
-Klasse.
$string = [System.IO.File]::ReadAllText("C:\New\python.txt").Replace("Python", "JavaScript")
[System.IO.File]::WriteAllText("C:\New\python.txt", $string)
Im obigen Code beginnen wir damit, eine Variable namens $string
zu erstellen, die den modifizierten Inhalt der Datei 'C:\New\python.txt'
speichern wird, nachdem wir die Textersetzung durchgeführt haben. Mit [System.IO.File]::ReadAllText("C:\New\python.txt")
lesen wir den gesamten Inhalt der Datei und speichern ihn in $string
.
Im nächsten Schritt verwenden wir die Methode Replace()
, um alle Instanzen von "Python"
im Inhalt zu finden und sie durch "JavaScript"
zu ersetzen, wodurch der Text effektiv aktualisiert wird. Schließlich verwenden wir [System.IO.File]::WriteAllText("C:\New\python.txt", $string)
, um den modifizierten Inhalt zurück in die gleiche Datei zu schreiben, wobei der ursprüngliche Text überschrieben und unsere Änderungen beibehalten werden.
Überprüfen Sie die vorgenommenen Änderungen in C:\New\python.txt
.
Get-Content C:\New\python.txt
Ausgabe:
Find the best JavaScript tutorials and learn JavaScript easily from DelftStack.
In der Ausgabe können wir sehen, dass "Python"
durch das Wort "JavaScript"
ersetzt wurde.
Ersetzen Sie jede Instanz einer Zeichenfolge in mehreren Dateien mit PowerShell
Die obigen Methoden ersetzen eine Zeichenfolge in einer einzelnen Datei. Manchmal müssen Sie möglicherweise dieselbe Zeichenfolge in mehreren Dateien ersetzen.
In diesem Fall können Sie den folgenden Befehl verwenden, um jede Instanz einer bestimmten Zeichenfolge in mehreren Dateien zu ersetzen.
Get-ChildItem 'C:\New\*.txt' | foreach {
(Get-Content $_) | foreach { $_ -Replace 'weekly', 'monthly' } | Set-Content $_
}
Im obigen Code beginnen wir damit, Get-ChildItem
zu verwenden, um eine Liste von '.txt'
-Dateien im Verzeichnis 'C:\New'
zu sammeln. Das Sternchen *
Platzhalter spezifiziert alle Dateien mit der Dateinamenerweiterung .txt
.
Dann durchlaufen wir jede Datei, lesen ihren Inhalt mit Get-Content
und wenden eine Ersetzungsoperation an, wobei wir 'weekly'
in 'monthly'
ändern, unter Verwendung des Operators -Replace
. Der modifizierte Inhalt wird dann mit Set-Content
in die gleiche Datei zurückgeschrieben.
Dieser Prozess wiederholt sich für jede Datei im Verzeichnis und ersetzt effizient 'weekly'
durch 'monthly'
in mehreren Dateien.
Wir können auch den Parameter -Recurse
verwenden, um eine Zeichenfolge in Dateien im angegebenen Verzeichnis und dessen Unterverzeichnissen zu ersetzen.
Get-ChildItem 'C:\New\*.txt' -Recurse | foreach {
(Get-Content $_) | foreach { $_ -Replace 'weekly', 'monthly' } | Set-Content $_
}
In diesem Code beginnen wir damit, Get-ChildItem
zu verwenden, um eine Liste von '.txt'
-Dateien innerhalb von 'C:\New'
und seinen Unterverzeichnissen zusammenzustellen. Die Option -Recurse
stellt sicher, dass wir diese Dateien nicht nur im angegebenen Verzeichnis, sondern auch in seinen Unterverzeichnissen suchen.
Wir verwenden dann ein Paar von ForEach
-Schleifen, um auf den Inhalt jeder Datei zuzugreifen. Innerhalb der inneren Schleife verwenden wir den Operator -Replace
, um 'weekly'
im Text durch 'monthly'
zu ersetzen.
Schließlich speichern wir den angepassten Inhalt zurück in die gleiche Datei. Dieser Prozess läuft durch alle Dateien in 'C:\New'
und deren Unterordnern und ermöglicht es uns, effektiv 'weekly'
durch 'monthly'
in zahlreichen Dateien und verschachtelten Verzeichnissen zu ersetzen.
Fazit
In diesem Artikel haben wir verschiedene Möglichkeiten untersucht, um Zeichenfolgen in einer einzelnen Datei mithilfe der Cmdlets Get-Content
und Set-Content
zu ersetzen, wobei sowohl eine grundlegende als auch eine effizientere Methode mit dem Parameter -Raw
angeboten wird. Anschließend haben wir die Möglichkeiten der File
-Klasse genutzt, um Text innerhalb von Dateien zu ersetzen und eine ausgefeiltere Technik zu demonstrieren.
Darüber hinaus haben wir unser Wissen erweitert, indem wir Text in mehreren Dateien in einem Verzeichnis und dessen Unterverzeichnissen ersetzt haben. Diese Methoden erleichtern es den Menschen, Texte in ihren Dateien zu bearbeiten und zeigen, wie nützlich PowerShell für solche Aufgaben sein kann.
Verwandter Artikel - PowerShell String
- Wie man die Position von Teilzeichenfolgen in PowerShell findet
- Überprüfen Sie, ob eine Zeichenfolge in PowerShell leer ist
- Wie man überprüft, ob eine Zeichenfolge NICHT NULL oder LEER in PowerShell ist
- Auswählen mehrerer Muster in einer Zeichenfolge mithilfe von PowerShell
- Ersetzen von Zeichenfolgen in PowerShell