So überprüfen Sie, ob eine Datei einen bestimmten String enthält, indem Sie PowerShell verwenden.
-
Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von
Select-String
in PowerShell enthält -
Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von
Get-Content
in PowerShell enthält - Überprüfen mehrerer Dateien, die eine bestimmte Zeichenfolge enthalten
- Fazit

Die Suche nach einer bestimmten Zeichenfolge in einer Textdatei ist eine gängige Aufgabe bei der Arbeit mit Windows PowerShell. Während Unix- und Linux-Umgebungen das zuverlässige grep
-Kommando nutzen, bietet PowerShell einen alternativen Ansatz mit den Cmdlets Select-String
, Get-Content
und Get-ChildItem
.
In diesem Artikel werden wir verschiedene Methoden untersuchen, wie man PowerShell verwendet, um eine Zeichenfolge in einer Textdatei zu finden.
Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von Select-String
in PowerShell enthält
Angenommen, wir haben eine Datei Demo.txt
auf unserem Rechner und wir möchten die Zeichenfolge Demonstration
darin finden.
Hier ist das PowerShell-Skript, um das zu tun:
Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'
In diesem Skript verwenden wir Select-String
mit dem Parameter -Path
, um den Speicherort der Datei anzugeben, und den Parameter -Pattern
, um die Zeichenfolge zu spezifizieren, nach der wir suchen.
Wenn unsere Datei das angegebene Muster ('Demonstration'
) enthält, gibt die Konsole den Dateinamen, die Zeilennummer und die Zeile mit der enthaltenen Zeichenfolge aus.
Ausgabe:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
Die obige Ausgabe zeigt die Datei Demo.txt
mit ihrem vollständigen Pfad, die Zeile, die unsere Zeichenfolge enthält (Zeile 1
), und die Zeile, die die Zeichenfolge selbst enthält (This is purely for demonstration
).
Was ist jedoch, wenn wir nur wissen müssen, ob die Datei die Zeichenfolge enthält oder nicht? In einem solchen Fall können wir das Skript wie folgt ändern:
$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"
if ($Knw -ne $null) {
echo Contains String
}
else {
echo Does not Contain String
}
In diesem Skript haben wir eine Variable namens $Knw
definiert, die das Ergebnis der gesuchten Zeichenfolge "Demonstration"
in der Datei am angegebenen Pfad mit Select-String
enthält. Dann überprüfen wir, ob die Variable $Knw
ungleich $null
ist, was bedeutet, dass ein Treffer in der Datei gefunden wurde.
Wenn ein Treffer gefunden wird, wird "Contains String."
ausgegeben. Wenn kein Treffer gefunden wird, wird "Does not Contain String."
ausgegeben.
Ausgabe:
Contains String
Da unsere Datei das Muster "Demonstration"
enthält, zeigt die Ausgabe Contains String
.
Überprüfen, ob eine Datei eine bestimmte Zeichenfolge mithilfe von Get-Content
in PowerShell enthält
Get-Content
ist ein Cmdlet, das die Inhalte eines angegebenen Pfads zu einer Datei abruft und die Inhalte der Datei liest, um ein Zeichenfolgenobjekt zurückzugeben. Um Get-Content
in unserer Datei Demo.txt
zu verwenden, verwenden wir das unten dargestellte Skript:
Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"
In diesem Skript verwenden wir Get-Content
, um die Inhalte unserer Datei Demo.txt
, die durch den Parameter -Path
angegeben ist, zu lesen und sie an den Select-String
-Befehl weiterzuleiten, der den Parameter -Pattern
verwendet, um die Zeichenfolge Demonstration
zu finden.
Ausgabe:
This purely for demonstration
Wenn wir nur die Anwesenheit der Zeichenfolge bestätigen möchten, können wir das unten gezeigte Skript verwenden:
If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
echo Contains String
}
else {
echo Does not Contains String
}
In diesem Skript verwenden wir Get-Content
, um die Daten der Datei an dem Ort C:\Users\pc\Demo\Demo.txt
zu lesen, und verwenden eine Pipeline (|
), um jede Zeile der Datei nacheinander zu verarbeiten. Innerhalb des Blocks %{}
überprüfen wir, ob jede Zeile die Zeichenfolge "Demonstration"
mithilfe des -match
-Operators enthält.
Wenn eine Zeile in der Datei "Demonstration"
enthält, wird "Contains String"
ausgegeben. Wenn keine Zeile in der Datei "Demonstration"
enthält, wird "Does not Contains String"
ausgegeben.
Ausgabe:
Contains String
Da unsere Datei die angegebene Zeichenfolge ("Demonstration"
) enthält, erhalten wir Contains String
als Ausgabe.
Überprüfen mehrerer Dateien, die eine bestimmte Zeichenfolge enthalten
Was ist, wenn Sie über fünfzig Textdateien verfügen und in allen nach einer Zeichenfolge suchen möchten? Wir werden zwei Möglichkeiten besprechen, dies zu tun.
Verwendung von Get-ChildItem
und Select-String
in PowerShell
Wir können die Cmdlets Get-ChildItem
und Select-String
verwenden. Das Cmdlet Get-ChildItem
findet eine oder mehrere Dateien basierend auf unseren Suchkriterien.
Betrachten wir ein Beispiel. Angenommen, unser Ordner Demo
enthält über fünfzig Textdateien, können wir die Zeichenfolge Demonstration
in allen mit diesem Skript suchen:
Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'
In diesem Skript verwenden wir Get-ChildItem
, um Dateien im angegebenen Verzeichnis (-Path
) und dessen Unterverzeichnissen (-Recurse
) aufzulisten. Der Pipe-Operator (|
) übergibt die Liste der Dateien an das Cmdlet Select-String
.
Schließlich verwenden wir Select-String
, um nach einem bestimmten Muster, 'Demonstration'
in jeder Datei zu suchen.
Die Konsole gibt die Dateinamen aus, die unsere Zeichenfolge enthalten, sowie die Zeilennummern und die Zeilen, die die Zeichenfolge enthalten.
Ausgabe:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Verwendung von Select-String
in PowerShell
Wir können auch nur Select-String
verwenden, um die bestimmte Zeichenfolge in mehreren Dateien zu überprüfen.
Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'
In diesem Skript verwenden wir das Platzhalterzeichen (*
) im Parameter -Path
, um nach allen Textdateien im Ordner Demo
zu suchen. Das Cmdlet Select-String
sucht in allen passenden Dateien nach der Zeichenfolge.
Ausgabe:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Wie oben wird die Konsole die Dateinamen ausgeben, die unsere Zeichenfolge enthalten, sowie die Zeilennummern und die Zeilen, die die Zeichenfolge enthalten.
Fazit
Windows PowerShell bietet eine Reihe von Werkzeugen, um effektiv nach Zeichenfolgen in Textdateien zu suchen. Ob Sie nun das Cmdlet Select-String
, Get-Content
oder eine Kombination aus Get-ChildItem
und Select-String
bevorzugen, Sie können Daten in Ihren Dateien leicht finden und bearbeiten.
Mit diesen Cmdlets werden Sie keine Schwierigkeiten haben, die Informationen zu finden, die Sie benötigen, und die Suche nach Textdateien in PowerShell wird mühelos.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedInVerwandter Artikel - PowerShell String
- Wie man die Position von Teilzeichenfolgen in PowerShell findet
- Wie man einen Text in einer Datei mit PowerShell ersetzt
- Ü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