Eine praktische Anleitung zum Auffinden von Textdateien, Skripten, Protokollen, Konfigurationsdateien und Quelldateien, in denen ein erforderliches Wort, eine Phrase, ein Parameter oder eine Zeile fehlt.
Die zuverlässigste integrierte Methode ist PowerShell. Öffnen Sie Windows Terminal oder PowerShell, ändern Sie den Ordnerpfad und führen Sie diesen Befehl aus:
PowerShell$folder = "C:\Users\User\Documents"
$text = "erforderlicher Text"
Get-ChildItem -Path $folder -Recurse -File |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
$text gespeicherten Text nicht enthalten.
Select-String ist der PowerShell-Befehl zum Suchen von Text innerhalb von Dateien. Mit -Quiet gibt er nur zurück, ob ein Treffer vorhanden ist. Das Hinzufügen von -not kehrt das Ergebnis um, sodass Windows Dateien auflistet, in denen der Text nicht gefunden wurde.
Diese Art der Suche unterscheidet sich von einer normalen Suche nach Dateinamen. Windows muss jede infrage kommende Datei öffnen, ihren Inhalt lesen und prüfen, ob der erforderliche Text darin vorkommt.
.ini, .conf, and .json.html, .css, and .jsVerwenden Sie diese Methode, wenn Sie eine saubere Liste von Dateien benötigen, die ein Wort, einen Parameter, ein Tag, einen Klassennamen, eine Domain oder ein anderes exaktes Fragment nicht enthalten.
$folder durch den Ordner, den Sie durchsuchen möchten.$text durch das Wort oder Fragment, dessen Fehlen Sie finden möchten.PowerShell$folder = "D:\Articles"
$text = "canonical"
Get-ChildItem -Path $folder -Recurse -File |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
In diesem Beispiel listet PowerShell Dateien in D:\Articles auf, die den Text canonical nicht enthalten.
Für eine exakte Phrase behalten Sie -SimpleMatch bei. Damit behandelt Select-String den Suchtext als wörtlichen Text und nicht als regulären Ausdruck.
PowerShell$folder = "C:\Users\User\Desktop\Pages"
$text = "Inhaltsverzeichnis"
Get-ChildItem -Path $folder -Recurse -File |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
-SimpleMatch, wenn Sie nach normalem Text wie einer Überschrift, einer CSS-Klasse, einer Menübeschriftung oder einem Domainnamen suchen. Ohne diese Option können Zeichen wie Punkte, Klammern und Fragezeichen als Syntax regulärer Ausdrücke interpretiert werden.
Filtern Sie bei großen Ordnern zuerst nach Dateierweiterungen. Dadurch wird die Suche schneller und viele Binärdateien werden vermieden.
*.html
Protokolle: *.log
Skripte: *.ps1
Textdateien: *.txt
PowerShell — eine Erweiterung$folder = "D:\Site"
$text = "style2.css"
Get-ChildItem -Path $folder -Recurse -File -Filter *.html |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
Um mehrere Erweiterungen zu durchsuchen, verwenden Sie -Include zusammen mit einem Platzhalterpfad:
PowerShell — mehrere Erweiterungen$folder = "D:\Site\*"
$text = "text-mark"
Get-ChildItem -Path $folder -Recurse -File -Include *.html,*.css,*.js |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
-Include einen Platzhalterpfad wie D:\Site\*. Andernfalls wendet PowerShell den Include-Filter möglicherweise nicht wie erwartet an.
Standardmäßig unterscheidet Select-String nicht zwischen Groß- und Kleinschreibung. Wenn Sie zwischen Error, ERROR und error unterscheiden müssen, fügen Sie -CaseSensitive hinzu.
PowerShell$folder = "C:\Logs"
$text = "ERROR"
Get-ChildItem -Path $folder -Recurse -File -Filter *.log |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -CaseSensitive -Quiet)
} |
Select-Object FullName
Dieser Befehl listet .log-Dateien auf, die die exakt großgeschriebene Zeichenfolge ERROR nicht enthalten.
Beim Durchsuchen von Projekten müssen häufig Cache-, Abhängigkeits-, Build- oder Versionskontrollordner übersprungen werden. Sie können sie herausfiltern, indem Sie vor dem Scannen jeder Datei den vollständigen Pfad prüfen.
PowerShell$folder = "D:\Project"
$text = "apiKey"
$excluded = "\node_modules\", "\.git\", "\bin\", "\obj\"
Get-ChildItem -Path $folder -Recurse -File -Include *.js,*.json,*.html,*.css |
Where-Object {
$file = $_.FullName
-not ($excluded | Where-Object { $file -like "*$_*" })
} |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern $text -SimpleMatch -Quiet)
} |
Select-Object FullName
Das ist nützlich für Website-Ordner, Softwareprojekte, exportierte Dokumentationen und große Archive mit Textdateien.
findstr kann Dateien finden, die Text enthalten, erzeugt bei rekursiven Suchen aber nicht direkt eine saubere Liste „Dateien ohne diesen Text“. Eine praktische integrierte Lösung besteht darin, zwei Listen zu erstellen und sie mit PowerShell zu vergleichen.
Verwenden Sie dir, um Dateien mit der zu prüfenden Erweiterung aufzulisten.
Verwenden Sie findstr mit /m, um Dateien aufzulisten, in denen der Text vorkommt.
Verwenden Sie PowerShell, um Dateien anzuzeigen, die in der ersten Liste vorhanden sind, aber in der zweiten fehlen.
Eingabeaufforderungcd /d D:\Articles
dir /b /s *.html > all-files.txt
findstr /m /s /i /c:"Inhaltsverzeichnis" *.html > files-with-text.txt
powershell -NoProfile -Command "$all=Get-Content .\all-files.txt; $yes=Get-Content .\files-with-text.txt; Compare-Object $all $yes | Where-Object SideIndicator -eq '<=' | Select-Object -ExpandProperty InputObject"
findstr-Methode, wenn Sie bereits in der Eingabeaufforderung arbeiten. Für neue Aufgaben ist die reine PowerShell-Methode kürzer und leichter zu pflegen.
Datei-Explorer ist für diese Aufgabe nicht das beste Tool. Er kann Dateinamen und indexierte Inhalte durchsuchen, aber eine zuverlässige rekursive Suche nach „zeige mir Dateien, deren Inhalt diesen Text nicht enthält“ erledigt PowerShell besser.
| Werkzeug | Gut geeignet für | Schwachpunkt |
|---|---|---|
| Datei-Explorer | Schnelles Suchen nach Dateinamen und indexierten Inhalten. | Nicht zuverlässig für eine vollständige Inhaltsprüfung nach „enthält Text nicht“. |
| PowerShell | Tatsächliche Dateiinhalte rekursiv scannen und Ergebnisse filtern. | Erfordert einen Befehl und kann bei sehr großen Ordnern langsam sein. |
findstr |
Einfache Suchen in Klartextdateien über die Eingabeaufforderung. | Weniger bequem für inverse Suchen und komplexe Filter. |
Wenn Sie nur Dateien benötigen, die ein Wort enthalten, kann der Datei-Explorer ausreichen. Wenn Sie Dateien benötigen, in denen dieses Wort fehlt, verwenden Sie PowerShell.
Suchen Sie zuerst in Ihren eigenen Dokument-, Projekt- oder Website-Ordnern. Vermeiden Sie das Scannen des gesamten Laufwerks C:\, außer Sie öffnen PowerShell als Administrator und rechnen mit Fehlern in geschützten Ordnern.
PowerShell — Zugriffs- und Lesefehler unterdrückenGet-ChildItem -Path "C:\Users\User\Documents" -Recurse -File -ErrorAction SilentlyContinue |
Where-Object {
-not (Select-String -Path $_.FullName -Pattern "erforderlicher Text" -SimpleMatch -Quiet -ErrorAction SilentlyContinue)
} |
Select-Object FullName
-Filter oder -Include, um Dateierweiterungen einzuschränken.Lassen Sie -SimpleMatch aktiviert. Das ist besonders wichtig bei Textfragmenten wie URLs, CSS-Selektoren, registrierungsähnlichen Zeichenfolgen, Codeausschnitten und Dateinamen mit Punkten.
Select-String lesen und den Treffer anschließend mit -not umkehren kann.
$patterns = "word1", "word2", und übergeben $patterns an -Pattern. Wenn Sie Dateien benötigen, denen alle erforderlichen Wörter fehlen, oder Dateien, denen eines der erforderlichen Wörter fehlt, passen Sie die Logik entsprechend an.
Select-String ist für Textstreams und Klartextdateien gedacht. PDF, DOCX und ähnliche Formate benötigen spezialisierte Parser oder Suchtools.
.txt, .log, .html, .css, .js, .xml und .json.
| Out-File missing-text-files.txt -Encoding UTF8 an das Ende des PowerShell-Befehls an, um die Liste zu speichern.
Um Dateien zu finden, die bestimmten Text in Windows nicht enthalten, verwenden Sie PowerShell mit Select-String. Damit steuern Sie direkt Ordner, Dateierweiterungen, Phrasensuche, Groß-/Kleinschreibung und ausgeschlossene Ordner.
Verwenden Sie den Datei-Explorer für schnelle Suchen nach Namen oder indexierten Inhalten, aber verwenden Sie PowerShell, wenn Sie eine zuverlässige Liste von Dateien benötigen, in denen ein erforderliches Wort, eine Phrase, eine Überschrift, ein Tag oder eine Konfigurationszeile fehlt.