Stapeldatei, dir | findstr innerhalb einer for-Schleife

1178
Gumbi

Lassen Sie mich vorab zugeben, dass ich ein kompletter Noob bei Batch-Dateien bin ... und generell Programmiersprache. Ich versuche, eine Batch-Datei zu schreiben, die es dem Benutzer ermöglicht, einen partiellen Dateinamen einzugeben, und es wird Dutzende Unterverzeichnisse durchsuchen, alle PDF-Dateien suchen und öffnen, deren Name die Benutzereingabe enthält. Ich erwarte, dass zwischen 2 und 8 verschiedene PDF-Dateien gefunden werden.

Ich kann folgendes verwenden, um die Dateipfade zurückzugeben,

set /p Number="Enter the Job-Shaft Number "  echo Searching folders  dir /b /s "*.pdf" | findstr /i "%Number%" 

aber wenn ich versuche, es in eine for-Schleife einzuwickeln, damit ich tatsächlich etwas damit anfangen kann, stoße ich auf Probleme:

for %%G in ('dir /b /s "*.pdf" | findstr /i "%Number%"') do echo %%G 

Es scheint die Pfeife nicht zu mögen. Irgendwelche Vorschläge?

PS: Ich möchte, dass die PDF-Dateien tatsächlich nicht nur Echo öffnen, aber ich bin noch nicht so weit gekommen. Wenn ich es jetzt nicht schaffen kann, macht es keinen Sinn, die Dinge noch komplizierter zu gestalten.

0
Welche Fehler bekommst du? harrymc vor 5 Jahren 4
Es ist schwer zu sagen, harrymc, es blinkt so schnell und dann schließt sich das Fenster. aber ich denke es heißt "| war zu dieser Zeit unerwartet" Gumbi vor 5 Jahren 4

1 Antwort auf die Frage

1
LotPings

Um den Befehl auszuführen, müssen Sie

  1. /fgerade hinter und auch einfügen
  2. Einfügen, "delims="um die Ausgabe nicht zu kennzeichnen
    (standardmäßig wird "tokens=1 and delims= "sie nach Leerzeichen abgeschnitten)
  3. entgehen Sie dem Pipe-Symbol ^|, um es an die sekundäre cmd.exe zu übergeben, die im Hintergrund ausgeführt wird.

for /f "delims=" %%G in ('dir /b /s "*.pdf" ^| findstr /i "%Number%"') do echo %%G 

Wenn es sich %Number%tatsächlich um eine Zahl handelt, muss der /iSchalter nicht verwendet werden

Danke für Ihre Hilfe! `for / f" delims = "%% G in ('dir / b / s" * .pdf "^ | findstr / i"% Number% "' ') do echo %% G` hat funktioniert! Gumbi vor 5 Jahren 5