Variable bleibt Null
Hallo,
ich bin es mal wieder.
Und zwar habe ich mir eine Schleife gebaut die mir die Zeilen einer Datei zählen soll. Das klappt fast auch Perfekt ausser:
Wenn ich die Variable in eine Datei schreiben lasse mit
Set zeilen >> zeilen.txt
wird mir das richtige Ergebnis angezeigt.
Sobald ich die Variable mit
echo %zeilen% >> zeilen.txt
schreibe wird nur Null ausgegeben. Und somit kann ich die Variable auch nicht weiter Verwenden.
Hier mal der Code:
Set zeilen=0
IF EXIST %datei_arbeitskopie% (
FOR /F "delims= " %%a IN (%datei_arbeitskopie%) do (
Set /a zeilen+=1
echo %zeilen% >> _zeilen.txt
)
Und noch ein bissl was.....
)
Schönen Tag euch
Gruß Aldeeer
ich bin es mal wieder.
Und zwar habe ich mir eine Schleife gebaut die mir die Zeilen einer Datei zählen soll. Das klappt fast auch Perfekt ausser:
Wenn ich die Variable in eine Datei schreiben lasse mit
Set zeilen >> zeilen.txt
wird mir das richtige Ergebnis angezeigt.
Sobald ich die Variable mit
echo %zeilen% >> zeilen.txt
schreibe wird nur Null ausgegeben. Und somit kann ich die Variable auch nicht weiter Verwenden.
Hier mal der Code:
Set zeilen=0
IF EXIST %datei_arbeitskopie% (
FOR /F "delims= " %%a IN (%datei_arbeitskopie%) do (
Set /a zeilen+=1
echo %zeilen% >> _zeilen.txt
)
Und noch ein bissl was.....
)
Schönen Tag euch
Gruß Aldeeer
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 110577
Url: https://administrator.de/contentid/110577
Ausgedruckt am: 25.11.2024 um 17:11 Uhr
8 Kommentare
Neuester Kommentar
Hallo Aldeeer!
Gibt es um diesen Teil Deines Batches herum noch eine weitere Schleife oder ein mehrzeilige "if-Konstrukt? Damit ließe sich erklären, warum %zeilen% in Deinem ersten Ansatz immer den Wert 0 liefert, bzw warum bei Verwendung von paulepanks Vorschlag (meiner hätte fast genauso ausgesehen) %zeilen% gar keinen Inhalt zu haben scheint: das Stichwort lautet "delayed Expansion".
Wenn Du vor Deiner Schleife mit
die "verzögerte Variablenauflösung" ermöglichst, kannst Du innerhalb der Schleife mit der Schreibweise
auch den aktuellen Wert der Variablen erhalten - die herkömmliche Schreibweise %zeile% liefert nur den Wert zu Beginn der Schleife.
Grüße
bastla
Gibt es um diesen Teil Deines Batches herum noch eine weitere Schleife oder ein mehrzeilige "if-Konstrukt? Damit ließe sich erklären, warum %zeilen% in Deinem ersten Ansatz immer den Wert 0 liefert, bzw warum bei Verwendung von paulepanks Vorschlag (meiner hätte fast genauso ausgesehen) %zeilen% gar keinen Inhalt zu haben scheint: das Stichwort lautet "delayed Expansion".
Wenn Du vor Deiner Schleife mit
setlocal enabledelayedexpansion
!zeile!
Grüße
bastla