Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ausgabe von FOR Schleife umleiten (zB zu more)

Frage Entwicklung Batch & Shell

Mitglied: simba

simba (Level 1) - Jetzt verbinden

14.06.2006, aktualisiert 17.06.2006, 5732 Aufrufe, 5 Kommentare

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 http://www.administrator.de/Errormessage_innerhalb_einer_FOR_Schleife_i ... schon angeguckt, aber irgendiwe ist mir das Licht nicht aufgegangen.

Danke schon mal im voraus.


gruss
simba
Mitglied: Dani
14.06.2006 um 19:18 Uhr
Hi,
probier es mal mit diesen Zeilen:
01.
@echo off 
02.
FOR /F %%i IN ('dir /s /b "*.txt"') DO find /N "das" %%i | more 

Gruß
Dani
Bitte warten ..
Mitglied: Biber
15.06.2006 um 09:34 Uhr
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
Bitte warten ..
Mitglied: simba
16.06.2006 um 05:12 Uhr
Hi,
probier es mal mit diesen Zeilen:
01.
> @echo off 
02.
> FOR /F %%i IN ('dir /s /b "*.txt"') DO find /N "das" %%i | more  
03.
> 

Gruß
Dani

Moin,
hmm so wie ich das sehe ist das genau meine Verison nur für ein batch file und nicht konsole, aber danke trotzdem. Leider funktioniert es so nicht For ruft eben das " | more" jedes mal mit auf. Ich würde aber gerne den gesamten output blättern.
Naja ein & pause anstatt | more tut zwar auch was in der Art aber ist nicht wirklich schön ;)
alles vorher mit >> temp.temp.temp in eine Datei zu schrieben und dann type temp.temp.temp | more ginge aber ist (zumindest mir) nicht in einer Zeile in der konsole möglich.
Daher mit (Achtung untestet :D )
01.
@echo off 
02.
If EXIST temp.temp.temp GOTO BadEnd 
03.
FOR /F %%i IN ('dir /b /s *.extension') Do find /N "searchString" %%i >> temp.temp.temp 
04.
type temp.temp.temp | more 
05.
del temp.temp.temp 
06.
 
07.
GOTO End 
08.
:BadEnd 
09.
echo "temp.temp.temp existiert, ich will nichts ueberschrieben, also verfruehtes Ende" 
10.
echo "temp.temp.temp loeschen und neu ausfuehren, damits geht. Danke" 
11.
:End 
12.
pause
würde es gehen, aber nicht von der Konsole.


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

Hmmm,
was soll ich dazu sagen, die Lösung ist viel zu schön einfach :D Danke!

btw ich hab den Eindruck, dass findstr nicht rekursiv in Unterordnern sucht.
shame on me, aber bin gerade zu faul zum Testen -.-

Aber da du ja noch eine Lösung parat hast für die andere Version mit FOR über find würde die mich schon interessieren. Will vor allem wissen, ob du es über eine temporäre Datei machen würdest, das ist das einzige was mir dazu noch eingefallen ist.


cheers
gimmegimme
Bitte warten ..
Mitglied: Biber
16.06.2006 um 09:59 Uhr
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:
01.
::-- snipp Wordfind.bat 
02.
:: einfacher Batchdreizeiler zum Suchen eines Strings in Dateien. 
03.
:: Usage: Batch irgendwo in den Pfad stellen.  
04.
:: Aufruf: Wordfind [Dateimaske] [Suchwort] 
05.
::        -Beispiel: Wordfind d:\temp\*.txt "biber" 
06.
:: !! Skizze: ohne Parameterprüfung, Help, etc. 
07.
@Echo off  
08.
If Not [%1]==[___]  (%0 ___ %1|find /i %2) & goto :eof 
09.
Setlocal EnableDelayedExpansion 
10.
for %%i in (%2) do ( 
11.
     Set /a "Line=10000" 
12.
     For /F "delims=" %%a In (%%i) Do ( 
13.
         Set /a "Line=!line! +1" 
14.
         Set cl=!line:~-3! 
15.
         echo [%%i:!cl!] %%a 
16.
     ))  
17.
::-- 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 ).
Bitte warten ..
Mitglied: simba
17.06.2006 um 17:16 Uhr
Moin Biber

hab Tomaten auf den Augen gehabt :D

hab mir help findstr angeguckt aber /s überlesen gehabt :D, ansich das standard dazu in Win ~~

dein Wordfind übersteigt meine Batchkenntnisse -.-, sieht aber aber nett aus. Wennde Lust und Zeit hast kannste das ja mal ein wenig kommentieren, was in den Zeilen passiert, aber ich könnte mir natürlich auch einfach ein wenig die Batch language specs angucken.

Danke erstmal für eure Hilfen, werds als gelöst markieren, auch wenn ich immernoch nicht weiß wie ich For find in der Kommandozeile auf more weiterleite, aufgrund der doch recht unständlichen Methoden geh ich einfach mal davon aus, dass es nicht geht (°o°).


Danke nochmal

Gruß
simba


edit verdammt, hab deinen (Biber's) ersten beitrag 5* markiert wollte eigentlich den 2ten, aber was solls.


edit2 Juhuuuuuu

Die Lösung ist viel zu leicht gewesen, kein wunder, dass es keinem eingefallen ist :D

01.
c:\[Path to seach root]\> @echo off & ((For /F %i In ('dir /s /b "[Match]"') Do find /N "seachString" %i) | more) & @echo on
hehe eine Klammer vor FOR und eine vor dem | Schaeffer Strich schon tut das wie es soll :D
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst FOR Schleife mit Unterverzeichnissen, die Ausgabe kürzen (tokens evtl.) (5)

Frage von Kriegstreiber zum Thema Batch & Shell ...

Linux
gelöst Find Ausgabe in formatierte text Datei umleiten (5)

Frage von MadM4x zum Thema Linux ...

Batch & Shell
gelöst Powershell Ausgabe in Messagebox (1)

Frage von Peterz zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 im Unternehmen? (26)

Frage von zorlayan zum Thema Windows 10 ...

Festplatten, SSD, Raid
Raid 1 2 SSD mit Windows Server 2016 (17)

Frage von jaywee zum Thema Festplatten, SSD, Raid ...

Netzwerkgrundlagen
Pro Contra "echtes Subnetting" VLSM (12)

Frage von killing.Apfelkuchen zum Thema Netzwerkgrundlagen ...

Voice over IP
Über Fritzfax over IP gehen nur einige Faxe (11)

Frage von shearer9 zum Thema Voice over IP ...