Top-Themen

Aktuelle Themen (A bis Z)

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

Unterschlagung der letzten Zeile der FINDSTR-Ausgabe

Frage Entwicklung Batch & Shell

Mitglied: -heny-

-heny- (Level 1) - Jetzt verbinden

03.03.2008, aktualisiert 04.03.2008, 6213 Aufrufe, 7 Kommentare

Hallo,

ich bin beim Schreiben einer Batch-Datei auf ein Problem gestoßen, welches ich sehr kurios finde und ebenfalls die Gründe für diese Merkwürdigkeit nicht verstehe.

Gehen wir davon aus, dass ich eine Textdatei, sowie ein Batch-File habe.

beispiel.txt
01.
Zeile 1 
02.
Zeile 2 
03.
Zeile 3 
04.
Zeile 4 
05.
Zeile 5
beispiel.bat
01.
@echo off 
02.
findstr /n $ beispiel.txt 
03.
pause
Beide Dateien befinden sich im selben Verzeichnis. Der FINDSTR-Befehl funktioniert so weit ohne Probleme, er versieht die Zeilen der Textdatei mit Zeilennummern und gibt sie aus.

Schaut man sich den Output jetzt allerdings etwas genauer an, so fällt auf, dass die letzte Zeile der Textdatei nicht ausgegeben wird.

Output: beispiel.bat
01.
1:Zeile 1 
02.
2:Zeile 2 
03.
3:Zeile 3 
04.
4:Zeile 4 
05.
Drücken Sie eine beliebige Taste . . .
Woran liegt dies? Das ganze ist keine Ausnahme, ich habe es mit mehreren Fällen probiert und es macht keinen Unterschied, ob die letzte Zeile der Textdatei eine Leerzeile ist oder beliebigen Inhalt enthält.
Kann man dies umgehen bzw. verhindern, da es beim Auslesen/Schreiben in Textdateien wesentlich nervt und man Workarounds bauen muss?

Ich wäre euch zu großem Dank verpflichtet, wenn ihr mir helfen könntet.

Gruß,
heny
Mitglied: Biber
03.03.2008 um 21:12 Uhr
Moin -heny-,

kein Grund zur Panik... works as designed, wie die Biber sagen.

Du lässt suchen nach allen Zeilen mit CRLF am Ende und die letzte Zeile hat halt keinen.
Aber einen Zeilenanfang haben alle Zeilen.
01.
(=21:09:16  D:\temp=) 
02.
REM  ### findstr /n $ e:\log.txt  ## reicht auch... 
03.
>findstr /n "$" e:\log.txt 
04.
1:Zeile 1 
05.
2:Zeile 2 
06.
3:Zeile 3 
07.
4:Zeile 4 
08.
 
09.
(=21:09:27  D:\temp=) 
10.
REM  ### findstr /n ^^ e:\log.txt  ## ginge syntaktisch auch, sieht aber nicht aus... 
11.
>findstr /n "^" e:\log.txt 
12.
1:Zeile 1 
13.
2:Zeile 2 
14.
3:Zeile 3 
15.
4:Zeile 4 
16.
5:Zeile 5 
17.
(=21:09:30  D:\temp=)
Kannst beruhigt schlafen heute...

...und M$ auch... keine Unterschlagung...

Grüße
Biber
Bitte warten ..
Mitglied: miniversum
03.03.2008 um 21:33 Uhr
Ist mir auch schon aufgefallen in nem andern Zusammenhang.
Was auch geht (und auch gut aussieht ;) ):
findstr /n .* e:\log.txt

miniversum
Bitte warten ..
Mitglied: Biber
03.03.2008 um 21:44 Uhr
Hmmja, miniversum,

die echte Kurzform von findstr WTF "inmyfile.txt" ist aber
findstr /n . e:\log.txt

[ohne "*"; der Punkt bedeutet ja schon "ein beliebiges Zeichen, und wenn es nur ein Zeilenanfang ist...]

Grüße
Biber
Ja, WTF bedeutet "Watt tu findest...
Bitte warten ..
Mitglied: miniversum
04.03.2008 um 08:16 Uhr
Hmmja, miniversum,

die echte Kurzform von findstr WTF "inmyfile.txt" ist aber
> findstr /n . e:\log.txt

[ohne "*"; der Punkt bedeutet ja schon "ein beliebiges Zeichen, und wenn es nur ein Zeilenanfang ist...]

Grüße
Biber
Ja, WTF bedeutet "Watt tu findest...

Da muss ich dir wiedersprechen.
Angenommen deine "inmyfile.txt" sieht so aus:
abc
ab
a

a
ab
abc
Dann würde bei den einzelnen Varianten folgendes rauskommen:
01.
 E:\>findstr /n .* inmyfile.txt 
02.
1:abc 
03.
2:ab 
04.
3:a 
05.
4: 
06.
5:a 
07.
6:ab 
08.
7:abc 
09.
E:\>findstr /n ^^ inmyfile.txt 
10.
1:abc 
11.
2:ab 
12.
3:a 
13.
4: 
14.
5:a 
15.
6:ab 
16.
7:abc 
17.
E:\>findstr /n . inmyfile.txt 
18.
1:abc 
19.
2:ab 
20.
3:a 
21.
5:a 
22.
6:ab 
23.
7:abc
Ohne das "*" fehlt also die vierte Zeile.
Das ".*" bewirkt aber das gleiche wie ein "^^"

miniversum
Bitte warten ..
Mitglied: Biber
04.03.2008 um 08:30 Uhr
@miniversum

Stimmt, hast recht.
Logisch herleiten kann ich dieses Verhalten nicht wirklich.
Aber ich nehms hin...

Grüße
Biber
Bitte warten ..
Mitglied: miniversum
04.03.2008 um 08:43 Uhr
Ich hätte da nen Erklärungsversuch.
"." gibt ja an das irgentein Zeichen da stehen muss.
In einer Leren Zeile steht ja garkein Zeichen. Ein Zeilenanfangszeichen gibts ja eigentlich nicht. Nur Zeilenumbruch.
Das "*" steht hingegen lauf Hilfe von findstr dafür das dieses zeichen mehrmals vorkommt, oder garnicht.
Garnicht trift also in dem Fall zu das dort auch ncihts in dieser Zeile steht.
Also sucht er nach irgenteinem Zeichen das entweder mehrmals wiederholt wird (also beliebige Zeichenfolge) oder gernicht vorkommt (also Leere Zeile)
Bitte warten ..
Mitglied: Biber
04.03.2008 um 08:49 Uhr
@miniversum

Jepp, jetzt habe ich es auch verstanden.
".*" == "Ein beliebiges Zeichen keinmal, einmal oder öfter".
"." == "Ein beliebiges Zeichen, aber mindestens eines"

Danke
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Übergabe einer Zeile die vor der per findstr gefundenen Zeile liegt
gelöst Frage von 2nd.level.noobieBatch & Shell9 Kommentare

Aaaalso erstmal ein freundliches Hallo und wie gehts. Ich nutze euer Forum seit ein paar Tagen für Recherchen bezüglich ...

Debian
Letzte Zeile lesen und einfügen
gelöst Frage von Fenris14Debian4 Kommentare

Guten Tag, ich versuche mich mal wieder ein wenig an Scripten und habe hier jetzt das Problem das ich ...

Windows 7
Texte weisen Fehler auf letzte Zeile wie Barcod Striche
Frage von NemonautilusWindows 73 Kommentare

Hallo alle zusammen. Schwierig den Fehler zu beschreiben: Also in allen Programmen (Outlook, Firefox usw. usw.) kommt dieser Fehler ...

Batch & Shell
Batch. Die erste Zeile bei CSV Ausgabe händisch bestimmen
gelöst Frage von BatchAnfaenger91Batch & Shell2 Kommentare

Hallo ihr Lieben, ich arbeite seit neusten mit Batch und habe gemerkt das es garnicht so schwer ist wenn ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 12 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 15 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 16 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 19 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte14 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...