Liste der Dateien abrufen, die einer Abfrage in Windows entsprechen/nicht entsprechen

Liste der Dateien abrufen, die einer Abfrage in Windows entsprechen/nicht entsprechen

Ich habe einen Verzeichnisbaum, der ca. 150 Dateien mit einer bestimmten Erweiterung ( .php) enthält, die in verschiedenen Ordnern organisiert sind. Einige dieser Dateien sind in Zeile 2 markiert, um einen bestimmten Status anzuzeigen. Ich weiß, dass diese Markierung immer in Zeile 2 steht und immer einem bestimmten Format folgt.

Ich suche nach etwas (einem Befehl, einem Skript, einem Programm), das das Verzeichnis nach dieser Markierung durchsuchen und mir eine Ausgabe wie diese liefern kann, allerdings in einem leicht zu bearbeitenden Format:

Beispielausgabe

Eine ideale Lösung wäre eine, die eine Liste ALLER .phpDateien bereitstellen kann, wobei Zeile 2 der Datei neben dem Dateinamen steht. Die obige Liste tut dies nur für übereinstimmende Dateien.

Ich habe versucht, Folgendes findin einer forSchleife zu verwenden:

for %f in (*.php) do find "Oracle Status" %f

Dabei wird allerdings nur das aktuelle Verzeichnis durchsucht und nicht auf benutzerfreundliche Weise formatiert.

Antwort1

Wenn Sie mit der Verwendung von PowerShell vertraut sind, sollte dieses Skript funktionieren:

Get-ChildItem *.php -Recurse | ForEach-Object {
 $lines = Get-Content $_ -TotalCount 2
 If ($lines.Length -GT 1 -And $lines[1].Length -GT 1 -And $lines[1].Contains('Oracle Status:')) {
  New-Object -TypeName PSObject -Prop @{'FilePath' = $_.FullName; 'StatusLine' = $lines[1]}
 }
}

Die Ausgabe sieht in der Konsole folgendermaßen aus:

Ergebnisse

Die hier gezeigte Version hat .txtmit einer Zeile nach Dateien gesucht Status:, aber die oben eingefügte Version macht, was Sie wollen.

Speichern Sie das Skript als .ps1Datei, z. B. phpstatus.ps1. Wenn Sie noch nie ein PowerShell-Skript ausgeführt haben, müssen Sie diesen Befehl einmal ausführen, um die Ausführung von Skripten zu ermöglichen:

Set-ExecutionPolicy Unrestricted -Scope CurrentUser

Sobald dies erledigt ist, können Sie das Skript aus einer PowerShell-Eingabeaufforderung aufrufen, indem Sie .\gefolgt von seinem Namen eingeben, z. B. .\phpstatus.ps1. (Die Tab-Vervollständigung funktioniert.) Da die Ausgabe eine Sammlung von PowerShell-Objekten ist, können Sie darauf standardmäßige PowerShell-Datenverwaltungsbefehle verwenden.

verwandte Informationen