daffman
Goto Top

For f spuckt wirres Zeug aus

Ich versuche aus einer Datei gewisse Zeichenketten in eine Variable umzuformen, aber, die variablen, die ich bekomme sind unbrauchbar.

hallo mit einandern!!

ich habe mich schon einmal an die community gewendet und zwar wegen dem befehl for /f!

also meine ausgangsdatei ist:
---------- 22 
Name</key><string>Super Trooper</string> 
Artist</key><string>ABBA</string> 
Album</key><string>Gold Greatest Hits</string> 
Genre</key><string>Pop</string> 
Play Count</key><integer>8</integer> 
Rating</key><integer>60</integer> 

so meine von mir geschrieben batch ist:

for /F "tokens=1,2,3 skip=1 delims=/" %%a in ('findstr /n . "4.tmp"') do (  
set "z=%%a"  
set "b%%a=%%b"  
set "c%%a=%%c"  
set "d%%a=%%d"  
)

bis dahin sehe ich noch keinen fehler, aber die ausgabe ist einfach nur noch wischiwaschi

D:\z>for /F "tokens=1,2,3 skip=1 delims=/" %a in ('findstr /n . "4.tmp"') do (  
set 'z=%a'  
 set b%a=%b
 set c%a=%c
 set d%a=%d
)

D:\z>(
set 'z=2:Name<'  
 set b2:Name<=key><string>Super Trooper<
 set c2:Name<=string>
 set d2:Name<=%d
)

D:\z>(
set 'z=3:Artist<'  
 set b3:Artist<=key><string>ABBA<
 set c3:Artist<=string>
 set d3:Artist<=%d
)

D:\z>(
set 'z=4:Album<'  
 set b4:Album<=key><string>Gold Greatest Hits<
 set c4:Album<=string>
 set d4:Album<=%d
)

D:\z>(
set 'z=5:Genre<'  
 set b5:Genre<=key><string>Pop<
 set c5:Genre<=string>
 set d5:Genre<=%d
)

D:\z>(
set 'z=6:Play Count<'  
 set b6:Play Count<=key><integer>8<
 set c6:Play Count<=integer>
 set d6:Play Count<=%d
)

D:\z>(
set 'z=7:Rating<'  
 set b7:Rating<=key><integer>60<
 set c7:Rating<=integer>
 set d7:Rating<=%d
)

ich hätte gerne dass z nur die zeilennummer ist; und der rest sich immer schön bei / teilt!

kann mir jemand helfen und mich eventuell aufklären, worin der fehler liegt?? -.-

MFG alexander

Content-Key: 145043

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

Printed on: April 25, 2024 at 05:04 o'clock

Member: bastla
bastla Jun 17, 2010 at 10:33:19 (UTC)
Goto Top
Hallo Daffman!

Irgendwie ist es für mich schwer vorstellbar, dass Du als Ergebnis
2
Name<
key><string>Super Trooper<
string>
haben möchtest ...

... aber falls doch, einfach noch den ":" als zusätzlichen Delimiter verwenden, also:
for /F "skip=1 tokens=1-4 delims=/:" %%a in ('findstr /n . "4.tmp"') do (
Grüße
bastla

P.S.: Mir wäre eher
for /f "skip=1 tokens=1,2,5 delims=:<>" %%a in ('findstr /n . "4.tmp"') do (
dazu eingefallen ...
Member: Daffman
Daffman Jun 17, 2010 at 11:51:03 (UTC)
Goto Top
hello face-smile

danke für deine rasche hilfe!! und dein zweiter vorschlag ist ideal, den habe ich eigentlich auch vorgehabt, nur nicht so vereinfacht wie du das jetzt dargestellt hast :-x

also vielen dank und erfüllt genau meine wünsche!!

mfg alex