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-Key: 238651

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

Printed on: April 26, 2024 at 08:04 o'clock

Member: rubberman
rubberman May 20, 2014 updated at 19:41:14 (UTC)
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
Member: santamaria
santamaria May 21, 2014 at 17:08:30 (UTC)
Goto Top
Hallo rubberman

Funktioniert einwandfrei.

Vielen Dank und Gruss
Santamaria