Powershell suche Dateien mithilfe einer Dateiliste und schreibe Output?

...komplette Frage anzeigen

1 Antwort

Wobei genau hängste denn? Sind die Dateinamen exakt so oder nur so ähnlich?

https://bitbucket.org/snippets/Ettar/BAeXBL

Ich hab dir mal was geschrieben. Guck es dir sehr genau an, ich übernehme keine Garantie für Funktionalität und keine Haftung für etwaige Schäden xD

Kurze Erläuterung Dateinamen:

"Filelist.txt": Datei mit Liste der Dateinamen

"return.txt": Liste mit den zurückgegebenen Dateipfaden (in Folge return-Datei o.Ä.).

Aktuell funktioniert es folgendermaßen:

Im oberen Block (Zeile 1-3) werden Variablen gesetzt. $searchGo sollte man nicht anfassen, da es dazu dient wichtige Dateien zu überprüfen (Dazu gleich Block 2). $cleanRet ist ein Boolean. Falls er auf $true gesetzt wird, wird die alte Liste (return.txt) gelöscht und eine neue angelegt. Bei $searchpath bitte den Pfad eintragen in dem gesucht wird.

Block 2 (Zeile 5-15): Zuerst wird überprüft ob die Liste mit Suchbegriffen vorhanden ist und ob es den Suchpfad gibt. Sollte eins von beiden nicht zutreffen, so wird $searchGo auf $false gesetzt. Zudem wird in dem Block überprüft, ob die return-Datei (return.txt) neu erzeugt werden soll.

Block 3 (Zeile 18-33): Sofern $searchGo auf $false ist, wird die Suche nicht gestartet. Der ganze Block würde also ungenutzt bleiben.
Sollte alles wie gedacht funktionieren, so wird erstmal getestet, ob die return-Datei exisitert. Sollte das nicht der Fall sein, wird eine neue erzeugt. Anschließend wird der Inhalt der Textdatei "Filelist.txt" ausgelesen.
Jeder Eintrag in der Liste wird jetzt erstmal um den Suffix (.exe, .txt) verkürzt (Zeile 26 und 27). Anschließend wird der Suchpfad rekursiv nach Ähnlichkeiten durchsucht. Wenn du also nach "Abc" suchst und es die Dateien "Abcde" und "Abcdefg" gibt, werden beide gefunden. Zudem werden nur Dateien gefunden. Anschließend werden die gefundenen Ergebnisse in die return-Datei eingetragen.

Aktuell ergeben sich dadurch ggf. kleinere Probleme.

1. Es werden ähnliche Dateien gefunden (gleicher Anfang des Dateinamens)

2. Der Suffix wird ignoriert

3. Es werden keine Ordner eingetragen

4. Die Ergebnisse werden immer ans Ende der return-Datei gehängt. Wenn du also 50 Ergebnisse jedesmal hast und das Skript 3 mal laufen lässt, so haste am Ende 150 Einträge.

Das 4. Problem lässt sich mehr oder minder durch $cleanRet beheben, da dann immer die Datei neu erzeugt wird. So hättest du auch nach 3 Durchgängen nur 50 Ergebnisse (halt die vom letzten Durchgang).

Solltest du Fragen haben oder sollte etwas verbessert werden müssen, musste dich einfach nur melden.

MfG

Etter

1

Was möchtest Du wissen?