aldeeer
Goto Top

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

Content-Key: 110577

Url: https://administrator.de/contentid/110577

Printed on: April 20, 2024 at 00:04 o'clock

Member: paulepank
paulepank Mar 05, 2009 at 08:31:34 (UTC)
Goto Top
Hallo Aldeer,

ich würde es so machen:

for /f "delims=:" %%i in ('findstr /n /r "." %datei_arbeitskopie%') do @set zeilen=%%i  

cu paulepank
Member: Aldeeer
Aldeeer Mar 05, 2009 at 08:47:05 (UTC)
Goto Top
Kann die dann aber leider nicht Weiterverarbeiten.
Nächste Schleife sieht dann so aus:

FOR /F "skip=%zeilen% tokens=1-4 delims= " %%a IN (%datei_logpars%) DO (
....macht was.....
)

Bringt er mir Syntaxfehler bei %zeilen%
Member: bastla
bastla Mar 05, 2009 at 09:48:30 (UTC)
Goto Top
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
setlocal enabledelayedexpansion
die "verzögerte Variablenauflösung" ermöglichst, kannst Du innerhalb der Schleife mit der Schreibweise
!zeile!
auch den aktuellen Wert der Variablen erhalten - die herkömmliche Schreibweise %zeile% liefert nur den Wert zu Beginn der Schleife.

Grüße
bastla
Member: Aldeeer
Aldeeer Mar 05, 2009 at 09:57:52 (UTC)
Goto Top
Genau das ist es! Vielen Dank!
Aber wie kann ich nun die Variable %zeilen% bzw !zeilen! in der nächsten Schleife ansprechen so das diese unter Skip=*variable* Verwendet wird?

Gruß Aldeeer
Member: bastla
bastla Mar 05, 2009 at 10:34:11 (UTC)
Goto Top
Hallo Aldeeer!

Hast Du es denn mit
FOR /F "skip=!zeilen! tokens=1-4 delims= " %%a IN (%datei_logpars%) DO (
schon versucht?

Grüße
bastla
Member: Aldeeer
Aldeeer Mar 05, 2009 at 11:00:14 (UTC)
Goto Top
Ja habe ich. Aber da gibt er mit Systanxfehler aus. Der sieht dann !zeilen! nur als Wort.

Gruß
Member: Aldeeer
Aldeeer Mar 05, 2009 at 11:53:17 (UTC)
Goto Top
So nun geht es wie es aussieht.
Ich habe einfach in der IF Bedingung eine Sprungmarke gesetzt. somit kann ich mit % Arbeiten und bekomme keinen Fehler mehr.

Vielen Dank an euch für die Hilfe.

Gruß Aldeeer
Member: Biber
Biber Mar 05, 2009 at 12:46:54 (UTC)
Goto Top
<OT>
Aber da gibt er mit Systanxfehler aus
Hat ich noch nie, hört sich aber echt beeindruckend an *Respekt*
</OT>

Grüße
Biber