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

Text finden und Folgezeile ausgeben

Frage Entwicklung Batch & Shell

Mitglied: hiob08

hiob08 (Level 1) - Jetzt verbinden

04.08.2010 um 10:50 Uhr, 8509 Aufrufe, 22 Kommentare

Hallo zusammen,

ich hab hier eine Ordner mit etwa 15000 Dateien.
Innerhalb der Dateien möchte ich nach einem bestimmten String suchen und die Folgezeile in einer seperaten Textdatei speichern.
Der gesuchte String kann pro Datei einmal aber auch mehrmals vorkommen.

Habe das hier schon gefunden:http://www.administrator.de/index.php?content=102488
Leider bin ich damit nicht weit gekommen :P

Hat jemand eine Idee?
Mitglied: Friemler
04.08.2010 um 11:56 Uhr
Hallo hiob08,

versuche folgenden Code:

01.
@echo off 
02.
 
03.
setlocal enabledelayedexpansion 
04.
 
05.
set "searchdir=%Userprofile%\Desktop" 
06.
set "searchfiles=*.txt" 
07.
set "searchstr=test" 
08.
set "destfile=con" 
09.
 
10.
del "%destfile%" 2>NUL 
11.
 
12.
for %%a in ("%searchdir%\%searchfiles%") do ( 
13.
  for /f "delims=:" %%b in ('findstr /i /n /c:"%searchstr%" "%%a"') do ( 
14.
    set /a theNextline=%%b+1 > NUL 
15.
 
16.
    for /f "delims=: tokens=1,*" %%i in ('findstr /n $ "%%a" ^| findstr /b "!theNextLine!"') do ( 
17.
      if "%%j" neq "" echo %%j>>"%destfile%" 
18.
19.
20.
21.
 
22.
endlocal
Die Variablen vor der ersten FOR-Schleife musst Du anpassen. Durch set destfile=con in Zeile 9 ([Edit] Zeile 8) wird alles auf dem Bildschirm ausgegeben, zum Testen.

Falls der String, den Du suchst, nur als eigenständiges Wort vorkommen soll und nicht auch als Bestandteil eines längeren Wortes, muss Zeile 13 folgendermaßen lauten:
01.
for /f "delims=:" %%b in ('findstr /i /n /r /c:"\<%searchstr%\>" "%%a"') do (
Für Diese Zeile gilt: Falls der Suchstring eines der Zeichen .*^$[]\ oder die Zeichenkombinationen \< oder \> enthält, muss JEDES EINZELNE dieser Zeichen mit \ escaped werden (siehe Hilfe zum FINDSTR-Befehl, erreichbar durch eingabe von findstr /? an der Eingabeaufforderung). Beispiel: Du willst nach 100$ suchen -> Dein Suchstring muss 100\$ lauten.

[Edit]
Wenn Du bei Deiner Suche Groß- und Kleinschreibung berücksichtigen willst, lass das /i weg.

Falls Du Fragen zur Funktionsweise des Codes hast, lass hören.
Dein Suchstring darf in dieser Version keine Anführungszeichen enthalten.
Wenn die Nachfolgerzeile der Zeile, die den Suchstring enthält, leer ist, wird nichts in die Zieldatei geschrieben.

Gruß
Friemler
Bitte warten ..
Mitglied: hiob08
04.08.2010 um 12:46 Uhr
Hallo Friemler,

danke für die fixe Antwort. Leider funktioniert das Skript nicht bei mir.
Das Fenster schließt sich einfach wieder und es wird keine Datei (%destfile%) geschrieben.
Hast du eine Idee warum es bei mir nicht geht?

Gruß
h1ob
Bitte warten ..
Mitglied: Biber
04.08.2010 um 12:55 Uhr
[OT]

Zitat von hiob08:
Hallo Friemler,

danke für die fixe Antwort. Leider funktioniert das Skript nicht bei mir.
Das Fenster schließt sich einfach wieder ....
Das gibt bestimmt gleich passende Antworten....

Und das zu Recht.
[/OT]
Bitte warten ..
Mitglied: 60730
04.08.2010 um 13:03 Uhr
Zitat von Biber:
[OT]
Das gibt bestimmt gleich passende Antworten....

Und das zu Recht.
[/OT]

[OT]
Wenn ich früher zum Onkel Doktor oder auf ein Amt gehen mußte und ich gefragt wurde, was ich beruflich mache
und ich wahrheitsgemäß antwortete- bekam ich immer einen "dummen" Spruch gedrückt und das Gesicht des jeweiligen Gegenüber verzog sich merkwürdig.
Früher konnte ich dieses Verhalten nicht einordnen - heute nenn ich mich dompteur d'ordinateur
[/OT]
Bitte warten ..
Mitglied: Friemler
04.08.2010 um 13:16 Uhr
Hallo hiob08,

hast Du die Variable destfile in Zeile 8 angepasst (und auch die anderen in Zeile 5-7)? Ich hatte doch geschrieben, das durch set destfile=con die Ausgabe auf dem Bildschirm landet. Da kein PAUSE-Befehl am Ende des Skripts steht und Du es wahrscheinlich per Doppelklick gestartet hast statt von der Eingabeaufforderung, siehst Du auch nichts. Wer lesen kann ist klar im Vorteil.

Gruß
Friemler
Bitte warten ..
Mitglied: hiob08
04.08.2010 um 13:33 Uhr
Hallo Friemler,

ganz so unbedarft bin ich nicht.
Habe natürlich die Variablen angepasst und auch mal testweise @echo on gestellt und am Ende ein Pause eingefügt um zu sehen, ob der die Dateien auch tatsächlich durchläuft.
So sehen die Variablen aus:

01.
set "searchdir=C:\Users\XXXXX\Desktop\Test"  
02.
set "searchfiles=*.TXT"  
03.
set "searchstr=R4_OBJEKT"  
04.
set "destfile=ergebnis.txt" 
//EDIT

Hab jetzt nochmal genauer geschaut. Das Skript geht die Schleifen richtig durch und findet auch die richtigen Stellen,
dass kann ich mit @echo on in der Variable theNextline sehen. Nur scheint - wenn ich das richtig sehe - die Auflösung der Variable theNextline in Zeile 14 nicht richtig zu klappen, trotz delayedexpansion.
Ich dachte zunächst, dass es an mangelnden Berechtigungen liegen könnte, aber auch das Skript mit Adminrechten zu starten bringt nichts.
Bitte warten ..
Mitglied: Friemler
04.08.2010 um 14:05 Uhr
Hallo hiob08,

die Sache mit der verzögerten Variablenerweiterung soll laut Aussage von Biber etwas buggy sein und manchmal nicht richtig funktionieren.

Poste doch mal eine Ausgabe des Skripts mit eingeschaltetem ECHO, vielleicht kommen wir dann weiter.

Gruß
Friemler
Bitte warten ..
Mitglied: hiob08
04.08.2010 um 14:16 Uhr
Hallo Friemler,

hier die Ausgabe:

01.
C:\Users\Admin\Desktop\Test>set "searchdir=C:\Users\Admin\Desktop\Test" 
02.
 
03.
C:\Users\Admin\Desktop\Test>set "searchfiles=*.TXT" 
04.
 
05.
C:\Users\Admin\Desktop\Test>set "searchstr=R4_OBJEKT" 
06.
 
07.
C:\Users\Admin\Desktop\Test>set "destfile=ergebnis.txt" 
08.
 
09.
C:\Users\Admin\Desktop\Test>for %a in ("C:\Users\Admin\Desktop\Test\*.TXT") do (for /F "delims=:" %b in ('findstr /i /n /c:"R4_OBJEKT" "%a"') do ( 
10.
set /a theNextline=%b+1   1>NUL 
11.
 for /F "delims=: tokens=1,*" %i in ('findstr /i /n $ "%a" | findstr /b "!theNextLine!"') do (echo %j 1>>"ergebnis.txt" ) 
12.
) ) 
13.
 
14.
C:\Users\Admin\Desktop\Test>(for /F "delims=:" %b in ('findstr /i /n /c:"R4_OBJEKT" "C:\Users\Admin\Desktop\Test\20100804.TXT"') do ( 
15.
set /a theNextline=%b+1   1>NUL 
16.
 for /F "delims=: tokens=1,*" %i in ('findstr /i /n $ "C:\Users\Admin\Desktop\Test\20100804.TXT" | findstr /b "!theNextLine!"') do (echo %j 1>>"ergebnis.txt" ) 
17.
) ) 
18.
 
19.
C:\Users\Admin\Desktop\Test>( 
20.
set /a theNextline=15+1   1>NUL 
21.
 for /F "delims=: tokens=1,*" %i in ('findstr /i /n $ "C:\Users\Admin\Desktop\Test\20100804.TXT" | findstr /b "!theNextLine!"') do (echo %j 1>>"ergebnis.txt" ) 
22.
23.
 
24.
C:\Users\Admin\Desktop\Test>endlocal 
25.
 
26.
C:\Users\Admin\Desktop\Test>Pause 
27.
Drücken Sie eine beliebige Taste . . . 
28.
 
Das Skript liest die Datei also richtig ein und stellt auch richtig fest, dass der Suchstring in Zeile 15 zu finden ist.
Was hat eigentlich das Dollar-Zeichen ($) in deinem Skript in Zeile 14 in dem Fall zu bedeuten?
Bitte warten ..
Mitglied: Friemler
04.08.2010 um 14:50 Uhr
Hallo hiob08,

das in der Ausgabe des Skripts "!theNextLine!" steht, ist normal. Bei mir (Windows XP SP3) funktioniert es und es steht das gleiche auf dem Schirm.

Das $-Zeichen bei dem einen FINDSTR-Befehl bewirkt, das nach einem Zeilenende gesucht wird, es werden also alle Zeilen gefunden inkl. leere. Der Befehl dient durch /n dazu, alle Dateizeilen mit einer Nummer zu versehen. Die richtige Zeile wird durch findstr /b "!theNextLine!" gefunden. Der sucht durch /b am Anfang einer Zeile (also da, wo die Zeilennummer steht) nach der Nummer in der Variable theNextLine.

Durch delims=: zählt der Doppelpunkt nach der Zeilennummer als Trennzeichen. Durch tokens=1,* wird deshalb der Laufvariablen %%i die Zeilennummer zugewiesen (brauchen wir nicht) und der durch die tokens-Option implizit erzeugten Laufvariablen %%j der eigentliche Zeileninhalt, der durch echo %%j>>%destfile% an die Ergebnisdatei angehängt wird.

Apropos: Vor der äußeren FOR-Schleife, also nach den SET-Befehlen, fehlt eigentlich noch
01.
del %destfile% 2>NUL
Sonst steht in der Zieldatei alles, was bei ALL Deinen Testläufen ausgegeben wurde.

Was steht eigentlich in der Ausgabedatei? Garnichts oder Mist oder was? Welches OS benutzt Du? Vista oder Win7?

[Edit]
Wenn Du bei Deiner Suche Groß- und Kleinschreibung berücksichtigen willst, muss die Zeile
01.
for /f "delims=:" %%b in ('findstr /i /n /c:"%searchstr%" "%%a"') do (
so lauten:
01.
for /f "delims=:" %%b in ('findstr /n /c:"%searchstr%" "%%a"') do (
Gruß
Friemler
Bitte warten ..
Mitglied: hiob08
04.08.2010 um 15:03 Uhr
Hallo Friemler,

die Zieldatei wird garnicht erzeugt. Habs grad auch mal an einem XP-Rechner probiert.
Da wird die Datei leider auch nicht erzeugt.

Gruß

//EDIT
Habs jetzt mit Win7 und WinXP probiert.
Bitte warten ..
Mitglied: Friemler
04.08.2010 um 15:12 Uhr
Hallo hiob08,

tja, dann ist Dein Suchstring in der Datei nicht enthalten. Oder Du suchst die Zieldatei im falschen Ordner. Du gibst ja nur ergebnis.txt als Zieldatei an. Die wird dann im aktuellen Verzeichnis angelegt, was bei Start des Skripts gesetzt ist. Eine andere Möglichkeit sehe ich nicht.

Gruß
Friemler
Bitte warten ..
Mitglied: hiob08
04.08.2010 um 15:28 Uhr
Hallo Friemler,

vielen dank für deine Geduld. Ich habs sowohl mit nur ergebnis.txt als auch mit voll qualifiziertem Pfad probiert. Geht leider beides nicht.
Und der Suchstring muss in der Datei drin sein, weil ich wie gesagt bei eingeschaltetem Echo die Zeilennummer in der Variable theNextline sehen kann.
Irgendwie bin ich total verwirrt :P
Bitte warten ..
Mitglied: Friemler
04.08.2010 um 15:39 Uhr
Hallo hiob08,

und die zweite Codezeile lautet auch
01.
setlocal enabledelayedexpansion
? Hat nämlich in der Ausgabe des Skript-Laufs gefehlt. Ich gehe bis jetzt davon aus, daß Du sie (in der Ausgabe) weg-editiert hast, da Du weiter oben schreibst
Zitat von hiob08:
Nur scheint - wenn ich das richtig sehe - die Auflösung der Variable theNextline
in Zeile 14 nicht richtig zu klappen, trotz delayedexpansion.

Ansonsten: Was ist der Inhalt von C:\Users\Admin\Desktop\Test\20100804.TXT?

Gruß
Friemler
Bitte warten ..
Mitglied: hiob08
05.08.2010 um 07:14 Uhr
Hallo Friemler,

delayedexpansion ist die ganze Zeit aktiv, ich habe es nur zusammengefasst mit '@echo on & setlocal enabledelayedexpansion', daher fehlt es in der Ausgabe.

Der Inhalt der Textdateien sieht wie folgt aus:

01.
#Feld R4_GROESSE 
02.
14 
03.
#Feld R4_OBJEKT 
04.
0123456789 
05.
#Kommentar 
06.
Dies ist ein Kommentar
//EDIT

ich habe mal versucht den Fehler weiter einzukreisen.
Wenn ich testweise den ersten findstr-Befehl (also 'findstr /n $ "test.txt" ^) aus Zeile 16 manuell in die Konsole tippe, kommt folgende Ausgabe:

01.
  
02.
C:\Users\Admin\Desktop\Test>findstr /i /n $ test.txt ^ 
03.
Mehr? 
04.
Mehr? 
05.
test.txt:1:asfd 
06.
test.txt:2:ad 
07.
test.txt:3:sa 
08.
test.txt:4:sd 
09.
test.txt:5:asd 
10.
test.txt:6:as 
11.
test.txt:7:d 
12.
test.txt:8:asd 
13.
test.txt:9:as 
14.
test.txt:10:d 
15.
test.txt:11:edrfehgddfgdggf 
16.
test.txt:12:a 
17.
test.txt:13:d 
18.
test.txt:14:asd 
19.
test.txt:15:g 
20.
test.txt:16:er 
21.
test.txt:17:t 
22.
test.txt:18:er 
23.
test.txt:19:as 
24.
test.txt:20: 
25.
test.txt:21:acx 
26.
test.txt:22:xy 
27.
test.txt:23:cq 
28.
test.txt:24: 
29.
test.txt:25:qr 
30.
test.txt:26:rqwreewr 
31.
test.txt:27:Feld 
32.
FINDSTR: 
33.
 kann nicht geöffnet werden.
Bitte warten ..
Mitglied: Friemler
05.08.2010 um 13:52 Uhr
Hallo hiob08,

wenn ich
01.
findstr /i /n $ test.txt ^
eintippe, kommt was vergleichbares, meine test.txt hat nur einen anderen Inhalt. Du musst das ^-Zeichen weglassen. Im Batch dient das Zeichen dazu, das nachfolgende |-Zeichen (Pipe-Zeichen) zu escapen. Wenn das ^ fehlt, versteht der Interpreter die Befehlszeile nicht. Wenn Du den o.g. Befehl ohne das ^ eintippst, kommt weder zweimal "Mehr?" noch wird der Dateiname vor den Zeilennummern ausgegeben und "FINDSTR: kann nicht geöffnet werden" erscheint auch nicht.

Poste doch bitte mal Deinen Batch-Code.

Gruß
Friemler
Bitte warten ..
Mitglied: hiob08
05.08.2010 um 14:19 Uhr
Hallo Friemler,

ich hab jetzt den ganzen Vormittag "rumprobiert" und hab nun in der innersten for-Schleife folgendes stehen:

01.
for /f "delims=: tokens=1,*" %%i in ('findstr /n . "%%a" ^| findstr "!theNextLine!"') do (  
02.
     echo %%j>>"%destfile%"
Damit scheint es wunderbar zu klappen, nur leider wird nun jede Zeile, in der !theNextLine! vorkommt ausgegeben,
d.h. wenn !theNextLine!= 16, dann wird Zeile 16 ausgegeben (super!) und zusätzlich jede Zeile, in der eine 16 vorkommt.
Kann ich findstr irgendwie dazu bringen, in dem Beispiel oben nur die Zeile 16 auszugeben?

Gruß
h1ob
Bitte warten ..
Mitglied: Biber
05.08.2010 um 14:37 Uhr
Moin hiob,



Zitat von hiob08:
d.h. wenn !theNextLine!= 16, dann wird Zeile 16 ausgegeben (super!) und zusätzlich jede Zeile, in der eine 16 vorkommt.
Kann ich findstr irgendwie dazu bringen, in dem Beispiel oben nur die Zeile 16 auszugeben?

Ich trau mich jezz' nich'.....

Ich sach ma so: Wieso lautet deine Eingabe jetzt "Friemler /?" und nicht "FindStr /?" ????

Tipp: Du willst doch eigentlich gar nicht allgemein nach "16" suchen, sondern exakt nach ":16:"[Doppelpunkt-16-Doppelpunkt].
Denn so liefert es Findstr doch (sagtest du hier : " test.txt:16:er " ).

Ich brauch Urlaub....
Biber
Bitte warten ..
Mitglied: brammer
05.08.2010 um 14:55 Uhr
Hallo,

@Biber
mal den Urlaubsschein von Biber abzeichnet.
und sich solange um die hilfsbedürftigen rothaarigen Praktikantinnen von Biber kümmert

brammer
Bitte warten ..
Mitglied: hiob08
05.08.2010 um 15:15 Uhr
Hallo Biber,

auf die gleiche gloreiche Idee bin ich vorhin auch gekommen und hab die Zeile entsprechend geändert:

01.
for /f "delims=: tokens=1,*" %%i in ('findstr /n . "%%a" ^| findstr "%%~nxi:!theNextLine!"') do (  
02.
     echo %%j>>"%destfile%"
Ergebnis: nichts! Hab mich gewundert und nochmal findstr /n . test.txt in die Konsole eingetippt und muss feststellen,
dass mir - bei richtiger Syntax - der Dateiname vor der Zeilennummer nicht angezeigt wird!!! Verflucht seist du, findstr!

hier nochmal der Beweis :

01.
C:\Users\Admin\Desktop\Test>findstr /n . test.txt 
02.
1:asfd 
03.
2:safd 
04.
3:as 
05.
4:df 
06.
5:sa 
07.
6:f 
08.
7:safd 
09.
8:as 
10.
9:fd 
11.
10:sa 
12.
11:f 
13.
12:sadf 
14.
14:sadf 
15.
16:sadf 
16.
17:a 
17.
18:sf 
18.
19:sad 
19.
20:f 
20.
21:as 
21.
22:fd 
22.
23:sa 
23.
24:ddf 
24.
25:sa 
25.
26:fd 
26.
27:as 
27.
28:f 
28.
29:asd 
29.
30:sadf 
30.
C:\Users\Admin\Desktop\Test>findstr /n . test.txt ^ 
31.
Mehr? 
32.
Mehr? 
33.
bla.txt:1:asfd 
34.
bla.txt:2:safd 
35.
bla.txt:3:as 
36.
bla.txt:4:df 
37.
bla.txt:5:sa 
38.
bla.txt:6:f 
39.
bla.txt:7:safd 
40.
bla.txt:8:as 
41.
bla.txt:9:fd 
42.
bla.txt:10:sa 
43.
bla.txt:11:f 
44.
bla.txt:12:sadf 
45.
bla.txt:14:sadf 
46.
bla.txt:16:sadf 
47.
bla.txt:17:a 
48.
bla.txt:18:sf 
49.
bla.txt:19:sad 
50.
bla.txt:20:f 
51.
bla.txt:21:as 
52.
bla.txt:22:fd 
53.
bla.txt:23:sa 
54.
bla.txt:24:ddf 
55.
bla.txt:25:sa 
56.
bla.txt:26:fd 
57.
bla.txt:27:as 
58.
bla.txt:28:f 
59.
bla.txt:29:asd 
60.
bla.txt:30:sadfFINDSTR: 
61.
 kann nicht geöffnet werden. 
62.
 
Bieber /?
Friemler /?

:D
Bitte warten ..
Mitglied: Friemler
05.08.2010 um 15:26 Uhr
Hallo hiob08,

es ist ja schonmal löblich, daß Du Dich mit den Parametern des FINDSTR-Befehls beschäftigt hast (Du hast $ durch . ersetzt). Dann hätte Dir aber auch der Parameter /B auffallen müssen, der bewirkt, daß FINDSTR am Anfang einer Zeile sucht. Außerdem hatte ich das in meiner Erklärung weiter oben erwähnt, als Antwort auf Deine Frage, was das $-Zeichen beim FINDSTR-Befehl bewirkt. Mein Code hat dieses /B auch enthalten, Du hast es gelöscht.

Warum das bei Dir statt mit $ nur mit . funktioniert (der Punkt steht ja für EIN beliebiges Zeichen) ist mir sowieso schleierhaft.

Schau Dir auch nochmal mein allererstes Posting an, wo ich das Skript veröffentlicht habe, ich habe am Text nochmal was geändert.

Gruß
Friemler


[Edit]
Und jetzt ist für mich hier Schluss! Start->Ausführen->brain.exe [ENTER]
Bitte warten ..
Mitglied: Biber
05.08.2010 um 15:44 Uhr
Moin hiob08,

Zitat von hiob08:
hier nochmal der Beweis :

C:\Users\Admin\Desktop\Test>findstr /n . test.txt
1:asfd
2:safd
....
C:\Users\Admin\Desktop\Test>findstr /n . test.txt ^
Mehr?
Mehr?
bla.txt:1:asfd
bla.txt:2:safd

Einen Satz wie den fett hervorgehobenen gefolgt von den darunterstehenden Details... das hat schon westerwellesche Dimensionen.

Der (bzw, EIN wichtiger) Unterschied der beiden FindStr-Varianten ist, dass
  • die erste GENAU EINE DATEI durchflöhen soll.
  • die zweite denkt, es könnte mehrere kommen [wegen des "^"-Caret-Zeichens.

--> Das Caret-Zeichen ist hier zum Test/beim Proof-of-Concept vollkommen falsch und auch die "Mehr?... FindStr..Nicht gefunden"-Meldungen kommen daher.
---> Einfach "^" nicht benutzen.... ist nicht zielführend und überhaupt nicht wesentlich.

Die unterschiedlichen Ausgaben kannst du reproduzieren mit
[Zeilen mit führendem ">" OHNE dieses ">" eintippseln]

   
> echo xx >temp23456.bla 
>findstr /n . temp23456.bla 
1:xx 
 
>findstr /n . temp23456.bla? 
temp23456.bla:1:xx
WENN du denn die zweite Ausgabeform MIT Dateinamen besser brauchen kannst
--> DANN hänge ein Wildcard-? an deinen Dateinamen.

Grüße
Biber

P.S. @brammer:
Wieso sollte ich meine Praktikantinnen denn zurücklassen?
Wir machen Fusskettchentauchen am Roten Meer...
Bitte warten ..
Mitglied: hiob08
05.08.2010 um 15:53 Uhr
Hallo Friemler,

vielen Dank für den wertvollen Tip mit /b.
Ich habe mir heute mindestens 20 mal die Hilfe zu findstr aufgerufen, aber wahrscheinlich vor lauter Bäumen den Wald nicht gesehen..
Auf jeden Fall funktioniert es nun problemlos!

Vielen Dank nochmal für deine Hilfe und vor allem Geduld!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
Dateien nach "Text" durchsuchen und Pfad ausgeben (32)

Frage von chgs2011 zum Thema VB for Applications ...

Microsoft Office
gelöst Wie kann man die Standard-Schriftart bei einfügen von Text in Word 2013 festlegen? (3)

Frage von Rene1976 zum Thema Microsoft Office ...

Batch & Shell
gelöst Dateien zusammenführen inkl. finden von doppelten Einträgen (3)

Frage von miczar zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...