Windows (11): How to search multiple files in folders at once?

I have a list of exact file names. Approx. 600

I also have a folder with several hundred files.

I now want to display all files from the folder that are in the list and in the folder.

Example:
List:

  • 1.pdf
  • 2.pdf
  • 3.pdf

Folder:

  • a.pdf
  • b.pdf
  • 100.pdf
  • 2.pdf
  • 3.pdf

At the end I should see 2.pdf and 3.pdf.

I've already tried using the OR parameter, but I think Windows search isn't designed for queries that are 10,000 characters long.

(1 votes)
Loading...

Similar Posts

Subscribe
Notify of
4 Answers
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
guterfrager5
9 months ago

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 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.

iQa1x
9 months ago
Reply to  guterfrager5

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.

MichaelSAL74
9 months ago

Everything nutzen