daffman

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 145043

Url: https://administrator.de/forum/for-f-spuckt-wirres-zeug-aus-145043.html

Ausgedruckt am: 12.05.2025 um 21:05 Uhr

bastla
bastla 17.06.2010 um 12:33:19 Uhr
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 ...
Daffman
Daffman 17.06.2010 um 13:51:03 Uhr
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