ruebensau
Goto Top

Variable zwischenspeichern?

Hallo Jungs,

sehe gerade bestimmt den Wald vor lauter Bäumen nicht.

habe diesen Input:

A600,test1,name1
$$$$,test2,name2
$$$$,test3,name3
$$$$,test4,name4
$$$$,test5,name5
$$$$,test6,name6
$$$$,test7,name7
A700,test8,name8
$$$$,test9,name9
$$$$,test10,name10
$$$$,test11,name11
A800,test12,name12
$$$$,test13,name13
output soll so aussehen:

A600,test1,name1
A600test2,name2
A600test3,name3
A600test4,name4
A600test5,name5
A600test6,name6
A600test7,name7
A700,test8,name8
A700test9,name9
A700test10,name10
A700test11,name11
A800,test12,name12
A800test13,name13

ich habs mit der for /f schleife probiert

for /f "tokens=1-3 delims=," %%a in (b.log) do (
if not "%%a"=="$$$$" set "k=%%a"
echo %k%,%%b,%%c >> d.log
)

erstes feld wird genommen und in variable gespeichert
solange erstes feld = $$$$ ersetze es durch den wert in der variable
wenn erstes feld nicht $$$$ dann ersetze die variable durch den neuen wert
usw.
bekomme es aber irgendwie nicht hin

danke schonmal

MfG
Rübe

Content-ID: 93674

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

Ausgedruckt am: 22.11.2024 um 20:11 Uhr

Biber
Biber 05.08.2008 um 18:01:58 Uhr
Goto Top
Moin Rübe,

da das Setzen und das Abfragen der Variablen %k% innerhalb einer CMD-Anweisung passiert, musst Du mit "DelayedExpansion" (=Auflösen einer Variablen erst beim Anfassen) arbeiten.
@echo off & setlocal EnableDelayedExpansion
for /f "tokens=1-3 delims=," %%a in (b.log) do (  
   if "%%a"=="$$$$" set "k=%%a"    
  echo !k!,%%b,%%c >>d.log
)
[ungetestet]

Grüße
Biber
ruebensau
ruebensau 20.08.2008 um 10:05:30 Uhr
Goto Top
endlich wieder im Büro und danke Biber. Funktioniert wie alles von dir!

Eine syntaktische Frage hätte ich noch:
Wieso muss k in Ausrufezeichen stehen !k! und kann nicht wie ich es sonst kenne in Prozentzeichen stehen %k%?
Liegt es an dem EnableDelayedExpansion?

Gruß
Rübe
Biber
Biber 20.08.2008 um 19:51:35 Uhr
Goto Top
Moin Rübe,

die etwas andere Schreibweise hat in der Tat mit der verzögerten Variablenauflösung zu tun.
Du findest Beispiele natürlich hier im Forum, aber eine brauchbare Hilfe auch am Cmd-Prompt bei Eingabe von SET /? so im unteren Hilfetextdrittel.

Grüße
Biber