santamaria
Goto Top

Windows Batch

Hallo

Ich habe eine umfangreiche CSV-Datei, bei der ich einige Spalten auslesen will und diese in eine neue CSV-Datei schreiben möchten.

Jetzt habe ich das Problem, dass bei meinem Output nur die letzte Zeile der test.csv Datei erscheint.

Mein Skript sieht wie folgt aus.

For /F "tokens=4,5,6,10,11,13,14,15 delims=;" %%i in (test.csv) do (
set DeviceIdentifier=%%l.domain.xy
set Port=1
set Number=%%l
set NameTemp=%%j %%k, %%n %%i
set Name=%NameTemp:~0,32%
set DeviceLocation=%%p
set SystemLocation=%%o
set SystemContact=%%m
echo %DeviceIdentifier%,%Port%,%Number%,%Name%,%DeviceLocation%,%SystemLocation%,%SystemContact%>>output.csv
)

In der CMD-Box sehe ich aber wie die definierten Variablen mit den richtigen Werten erscheinen.

Kann mir da jemand weiter helfen?

Vielen Dank und Gruss

Santamaria

Content-ID: 238651

Url: https://administrator.de/forum/windows-batch-238651.html

Ausgedruckt am: 11.04.2025 um 13:04 Uhr

rubberman
rubberman 20.05.2014 aktualisiert um 21:41:14 Uhr
Goto Top
Hallo Santamaria.

Diese Frage kommt regelmäßig. Dort habe ich das mal etwas ausführlicher erklärt.

So könnte das aussehen (ungetestet):
For /F "tokens=4,5,6,10,11,13,14,15 delims=;" %%i in (test.csv) do (  
  set "DeviceIdentifier=%%l.domain.xy"  
  set "Number=%%l"  
  set "NameTemp=%%j %%k, %%n %%i"  
  set "DeviceLocation=%%p"  
  set "SystemLocation=%%o"  
  set "SystemContact=%%m"  
  setlocal EnableDelayedExpansion
  echo !DeviceIdentifier!,1,!Number!,!NameTemp:~0,32!,!DeviceLocation!,!SystemLocation!,!SystemContact!>>output.csv
  endlocal
)
Für Werte, bei denen es sicher ist, dass sie nie Ausrufezeichen enthalten werden, kannst du auch direkt die FOR Variablen in die ECHO Ausgabe einbinden, ohne sie vorher in eine Umgebungsvariable zu kopieren.

Grüße
rubberman
santamaria
santamaria 21.05.2014 um 19:08:30 Uhr
Goto Top
Hallo rubberman

Funktioniert einwandfrei.

Vielen Dank und Gruss
Santamaria