Windows (11): Wie mehrere Dateien in Ordner gleichzeitig suchen?
Ich habe eine Liste mit exakten Dateinamen Ca. 600
Außerdem habe ich einen Ordner mit ebenfalls mehreren hundert Dateien.
Ich möchte mir jetzt alle Dateien aus dem Ordner Anzeigen lassen, die in der Liste sind und im Ordner.
Beispiel:
Liste:
- 1.pdf
- 2.pdf
- 3.pdf
Ordner:
- a.pdf
- b.pdf
- 100.pdf
- 2.pdf
- 3.pdf
Am Ende soll mir 2.pdf und 3.pdf angezeigt werden.
Ich habe es schon mit dem OR Parameter probiert, aber ich glaube die windows suche ist nicht für Suchanfragen konzipiert, die 10000 Zeichen lang sind.
1 Antwort
Das müsste mit einer Batch-Datei relativ einfach funktionieren. Also einfach diesen Code hier in eine Datei kopieren und sie suche.cmd oder .bat nennen, dass sie ausführbar ist.
@echo off
for /f "tokens=*" %%i in (liste.txt) do (
if exist %%i echo %%i
)
pause
Die äußere Schleife läuft durch alle Zeilen der Datei liste.txt. Für jede Zeile wird dann das if ausgeführt, dass prüft, ob die Datei existiert und wenn das der Fall ist, wird die Zeile ausgegeben. Wenn du es direkt über die Konsole (also nicht in einer *.cmd/*.bat Datei) ausführen willst, musst du anstatt %%i nur %i nehmen ... weil Windows halt XD
Also in der Konsole (in dem Ordner Shift + Rechtsklick machen und dann "Powershell-Fenster hier öffnen") würde ich es so eingeben:
for /f "tokens=*" %i in (liste.txt) do @if exist %i @echo %i
(das @ vor dem if und dem echo ist da, dass nur die Ausgabe und nicht der Befehl angezeigt wird)
PS: was meinst du damit, dass du es mit einem OR-Parameter probiert hast? Ich kann mir darunter nichts vorstellen.
Edit:
Wie @iQa1x in den Kommentaren geschrieben hat, kannst du die Ergebnise auch gleich in eine Textdatei schreiben, wenn du das willst. Das wäre bei einer großen Anzahl Dateien evtl. auch minimal schneller. Dazu könnte man das Skript so ändern:
@echo off
if exist gefunden.txt del gefunden.txt
for /f "tokens=*" %%i in (liste.txt) do (
if exist %%i echo %%i >> gefunden.txt
)
type gefunden.txt
pause
also als erstes wird geprüft, ob die Datei gefunden.txt existiert und sie gelöscht, falls das der Fall ist. In der Schleife werden die gefundenen Dateinamen jetzt direkt in die Datei gefunden.txt geschrieben und zum Schluss diese Datei ausgegeben.
kleine Ergänzung: Du kannst hinter dem echo %i auch noch >>listeneu.txt anhängen, damit du das Ergebnis wieder in einer Textdatei bekommst und nicht auf der Konsole. >> hängt an, also ggf. listeneu.txt löschen, wenn du es mehrmals machst.
Man kann direkt in die eingebaute Windows Suche nach mehreren Dateien suchen, indem man diese mit dem "OR"-Operator verbindet.
Man kann also direkt in das Suchfeld "1.pdf OR 2.pdf OR 3.pdf" schreiben.