CSV mit Batch bearbeiten
Hallo zusammen,
ich hoffe, ihr könnt mir helfen, vermutlich nur ein kleiner Denkfehler? Ich hab ein .csv Datei, die ich im Batch Skript (cmd via .bat) bearbeiten möchte:
Hier soll eine Zeile anhand des ersten Tokens z.B. "Test3" ermittelt und bearbeitet werden. Bestimmte Werte mit False sollen gesucht und durch True ersetzt werden. Anschließend soll eine neue Datei mit dieser einen Zeile erstellt werden. p.s. Den Header der csv schneide ich bereits mit einer for Schleife aus.
In einer ersten for Schleife extrahiere ich die gewünschte Zeile und schreibe Sie in eine Variable !temp_line!. Anchließend rufe ich die folgende Funktion via call auf und übergebe den gewünschten Treffer für den zu ändernden False Wert (also 1,2,3 oder 4):
Warum hab ich nach dem Durchlaufen der Funktion die Zeile zweimal in der Variable !temp_line!?
p.s. An dieser Stelle ein herzliches Dankeschön an Administrator.de und alle Mitglieder. Hier wurde mir über viele Jahre geholfen! Ein besonderer Dank geht an bastla, miniversum und Biber! vermutlich alle nicht mehr aktiv
ich hoffe, ihr könnt mir helfen, vermutlich nur ein kleiner Denkfehler? Ich hab ein .csv Datei, die ich im Batch Skript (cmd via .bat) bearbeiten möchte:
"Test1" False 1 False 1 False 1 False 43 4 0 "Blabla1" Zeitstempel 121673
"Test2" False 1 False 1 False 1 False 21 4 0 "Blabla2" Zeitstempel 126371
"Test3" False 1 False 1 False 1 False 11 7 0 "Blabla3" Zeitstempel 21061
Hier soll eine Zeile anhand des ersten Tokens z.B. "Test3" ermittelt und bearbeitet werden. Bestimmte Werte mit False sollen gesucht und durch True ersetzt werden. Anschließend soll eine neue Datei mit dieser einen Zeile erstellt werden. p.s. Den Header der csv schneide ich bereits mit einer for Schleife aus.
In einer ersten for Schleife extrahiere ich die gewünschte Zeile und schreibe Sie in eine Variable !temp_line!. Anchließend rufe ich die folgende Funktion via call auf und übergebe den gewünschten Treffer für den zu ändernden False Wert (also 1,2,3 oder 4):
@Echo on
setlocal enabledelayedexpansion
:setcsv
set "count=0"
for %%a in (!temp_line!) do (
if "%%a"=="False" (
set /a count+=1
if !count! equ %1 (
set "modified_value=True"
) else (
set "modified_value=%%a"
)
) else (
set "modified_value=%%a"
)
set "new_variable=!new_variable!!modified_value! "
set "temp_line=!new_variable!"
)
exit /B !temp_line!
Warum hab ich nach dem Durchlaufen der Funktion die Zeile zweimal in der Variable !temp_line!?
p.s. An dieser Stelle ein herzliches Dankeschön an Administrator.de und alle Mitglieder. Hier wurde mir über viele Jahre geholfen! Ein besonderer Dank geht an bastla, miniversum und Biber! vermutlich alle nicht mehr aktiv
Please also mark the comments that contributed to the solution of the article
Content-ID: 13979512324
Url: https://administrator.de/contentid/13979512324
Printed on: October 5, 2024 at 09:10 o'clock
3 Comments
Latest comment
vermutlich alle nicht mehr aktiv
Warum siehst du nicht mal selber nach?? 🧐 @bastla , @miniversum , @BiberHilfreich für die Community wäre sicher auch die Info für welche Shell der Batch denn laufen soll...