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

Einträge in einer Datei zählen

Frage Entwicklung Batch & Shell

Mitglied: wiboma

wiboma (Level 1) - Jetzt verbinden

06.07.2010 um 23:33 Uhr, 9004 Aufrufe, 5 Kommentare

Hallo,
ich habe ein (hoffentlich) kleines Problem.

Ich möchte die Anzahl der Zeilen einer Textdatei mit Hilfe eines Batch-Programmes zählen.
ich habe etwas herumexperimentiert, konnte mein Problem aber nicht lösen

Mit der Anweisung:

for /f %%i in (datei.txt) do echo %%i

bekomme ich die Einträge in der Datei angezeigt. Das ist so auch ok.

mit der Anweisung

for /f %%i in (datei.txt) do set pp=%%i

wurde der letzen Eintrag der Datei der Variablen pp zugewiesen.

Das Zählen der Einträge habe ich dann mit der Anweisung:

set /a zz=0
for /f %%i in (datei.txt) do set /a zz=%zz%+1


probiert, was allerdings nicht funktionierte.
Die Variable zz hat unabhängig der Einträge/Zeilen in der Datei nur den Wert 1 angenommen.

Es wäre toll, wenn mir hier jemand weiterhelfen könnte.
Mitglied: Nottrott
07.07.2010 um 00:16 Uhr
Hi,

das Problem heißt verzögerte Erweiterung von Umgebungsvariablen, dein zz wird in der Schleife schon vor dem Ausführen der Zeile mit 0 ersetzt..
Umgehen kannst du das, indem du die cmd mit dem Parameter /V:ON aufrufst und das %zz% durch !zz! ersetzt.

Schönen Abend noch
Nottrott
Bitte warten ..
Mitglied: bastla
07.07.2010 um 00:26 Uhr
Umgehen kannst du das, indem du die cmd mit dem Parameter /V:ON aufrufst
... oder auch einfach mit einem
setlocal enabledelayedexpansion
Trotzdem erforderlich ist, dass Du
das %zz% durch !zz! ersetzt.
- Du könntest aber auch einfach
for /f %%i in (datei.txt) do set /a zz+=1
verwenden (wobei Leerzeilen jeweils nicht mitgezählt werden) ...
Alternativen zum "Selbstzählen" wären per "find" oder "findstr" zu realisieren:
for /f %%i in ('find /c /v "§§§§§"<datei.txt') do set /a zz=%%i
(wobei "§§§§§" für irgendeinen Suchbegriff steht, der in der "datei.txt" garantiert nicht enthalten ist - da wegen des "/v" alle anderen Zeilen gezählt werden, erhältst Du damit die Gesamtzeilenanzahl)
for /f "delims=:" %%i in ('findstr /n "^" datei.txt') do set /a zz=%%i
Hier werden alle Zeilen, die das Suchkriterium "^" (= hat einen Zeilenanfang ) erfüllen, nummeriert ausgegeben und jeweils die Zeilennummer in die Variable übernommen.

Die beiden letzten Varianten zählen auch Leerzeilen.

Grüße
bastla

P.S.: Willkommen im Forum, wiboma!
Bitte warten ..
Mitglied: wiboma
07.07.2010 um 08:03 Uhr
Ich bedanke mich für die schnelle Hilfe.

Funktioniert mit += prima.
Bitte warten ..
Mitglied: wiboma
07.07.2010 um 08:13 Uhr
Hallo,

ich bedanke mich für die schnelle Rückantwort.

BASTLA hat ebenfalls auf meine Anfrage geantwortet und eine einfache Lösung angeboten, mit: set /a zz+=1

das hat funktioniert.

Deine Lösung habe ich auch ausprobieren wollen, bin aber daran gescheitert, dass nach der Zeile

cmd /N:on

das DOS -Fenster mit Prompt erscheint, die folgenden Anweisungen in der Batch-Datei aber nicht mehr ausgeführt werden.

Die Batch bricht praktisch nach der Zeile cmd /N:on ab.

Wie kann man das umgehen ?
Bitte warten ..
Mitglied: pieh-ejdsch
07.07.2010 um 11:57 Uhr
Hi wiboma,

NICHT: /Nordpol
Sondern: /Viktor

gib mal im cmd Fenster

cmd /?
ein

und auch Willkommen im Forum

Gruß Phil
Bitte warten ..
Ähnliche Inhalte
C und C++
Datei-Managment (C++) (8)

Frage von clragon zum Thema C und C ...

Batch & Shell
gelöst Schreiben eines Strings mit Leerzeichen in eine Datei (6)

Frage von c20082005 zum Thema Batch & Shell ...

VB for Applications
gelöst VB Skript Excel Datei (3)

Frage von Frager zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Router & Routing
Tipps für Router (ca. 100 clients, VPN) (18)

Frage von oel-auge zum Thema Router & Routing ...

TK-Netze & Geräte
gelöst Convert von TAPI auf CAPI gesucht (13)

Frage von StefanKittel zum Thema TK-Netze & Geräte ...