Ausgabe von FOR Schleife umleiten (zB zu more)
Das DO von FOR nimmt immer den gesamten Rest der Zeile als Befehl zB:
FOR /F %i IN ('dir *.extension /b /s') DO find /N "seachString" %i | more
will nicht tun.
Also was ich genau machen möchte ist wie in dem Bspl im Untertitel:
FOR /F %i IN ('dir *.extension /b /s') DO find /N "seachString" %i | more
Suche nach einem String in allen Dateien die mit dem dir Befehl gefunden werden und die Ausgabe dann an more weiterzureichen, da sie ggf. recht lang werden kann und man dann nicht mehr viel damit anfangen kann :D
Wie bekomm ich das hin?
Hab mir Errormessage innerhalb einer FOR Schleife in File umleiten? schon angeguckt, aber irgendiwe ist mir das Licht nicht aufgegangen.
Danke schon mal im voraus.
gruss
simba
FOR /F %i IN ('dir *.extension /b /s') DO find /N "seachString" %i | more
will nicht tun.
Also was ich genau machen möchte ist wie in dem Bspl im Untertitel:
FOR /F %i IN ('dir *.extension /b /s') DO find /N "seachString" %i | more
Suche nach einem String in allen Dateien die mit dem dir Befehl gefunden werden und die Ausgabe dann an more weiterzureichen, da sie ggf. recht lang werden kann und man dann nicht mehr viel damit anfangen kann :D
Wie bekomm ich das hin?
Hab mir Errormessage innerhalb einer FOR Schleife in File umleiten? schon angeguckt, aber irgendiwe ist mir das Licht nicht aufgegangen.
Danke schon mal im voraus.
gruss
simba
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 34226
Url: https://administrator.de/contentid/34226
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
5 Kommentare
Neuester Kommentar
Moin Simba,
in diesem Fall ist die Lösung über eine FOR..IN..DO..Anweisung aufwändiger (obwohl ich dafür natürlich auch eine Lösung posten könnte).
Mach es in diesem Fall so:
(Beispiel vom CMD-Prompt)
findstr /i /n "searchstr" *.extension
[Output]Beispiel.extension:17:hier ist ein searchstr
Und da ggf. noch ein "|more" dahintersetzen.
Gruß
Biber
in diesem Fall ist die Lösung über eine FOR..IN..DO..Anweisung aufwändiger (obwohl ich dafür natürlich auch eine Lösung posten könnte).
Mach es in diesem Fall so:
(Beispiel vom CMD-Prompt)
findstr /i /n "searchstr" *.extension
[Output]Beispiel.extension:17:hier ist ein searchstr
Und da ggf. noch ein "|more" dahintersetzen.
Gruß
Biber
Moin simba,
1) Findstr sucht auch in Unterverzeichnissen mit Parameter /s
Beispiel:
Findstr /i /n /s "Server" c:\*.txt
2) Meine Variante zum Wort-Finden in Textdateien:
Beispiel-Output mit Dateinagabe und Zeilennummer:
wordfind d:\temp\*.txt "biber"
[d:\temp\TEmp-Dokument.txt:015] HTH Biber
[d:\temp\test1.txt:015] HTH Biber
[d:\temp\test2.txt:018] HTH Biber
[d:\temp\test2.txt:050] HTH Biber
Gruß Biber
P.S. In der "IF NOT [..]..." -Zeile kann natürlich auch noch ein "|more" angehängt werden.
Ebenso aber auch beim Aufruf selbst ( WordFind *.txt "bla" |more ).
1) Findstr sucht auch in Unterverzeichnissen mit Parameter /s
Beispiel:
Findstr /i /n /s "Server" c:\*.txt
2) Meine Variante zum Wort-Finden in Textdateien:
::-- snipp Wordfind.bat
:: einfacher Batchdreizeiler zum Suchen eines Strings in Dateien.
:: Usage: Batch irgendwo in den Pfad stellen.
:: Aufruf: Wordfind [Dateimaske] [Suchwort]
:: -Beispiel: Wordfind d:\temp\*.txt "biber"
:: !! Skizze: ohne Parameterprüfung, Help, etc.
@Echo off
If Not [%1]==[___] (%0 ___ %1|find /i %2) & goto :eof
Setlocal EnableDelayedExpansion
for %%i in (%2) do (
Set /a "Line=10000"
For /F "delims=" %%a In (%%i) Do (
Set /a "Line=!line! +1"
Set cl=!line:~-3!
echo [%%i:!cl!] %%a
))
::-- snapp Wordfind.bat
Beispiel-Output mit Dateinagabe und Zeilennummer:
wordfind d:\temp\*.txt "biber"
[d:\temp\TEmp-Dokument.txt:015] HTH Biber
[d:\temp\test1.txt:015] HTH Biber
[d:\temp\test2.txt:018] HTH Biber
[d:\temp\test2.txt:050] HTH Biber
Gruß Biber
P.S. In der "IF NOT [..]..." -Zeile kann natürlich auch noch ein "|more" angehängt werden.
Ebenso aber auch beim Aufruf selbst ( WordFind *.txt "bla" |more ).