odyon1
Goto Top

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:

"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 face-smile

Content-ID: 13979512324

Url: https://administrator.de/forum/csv-mit-batch-bearbeiten-13979512324.html

Ausgedruckt am: 21.12.2024 um 14:12 Uhr

aqui
aqui 05.03.2024 aktualisiert um 14:09:36 Uhr
Goto Top
vermutlich alle nicht mehr aktiv
Warum siehst du nicht mal selber nach?? 🧐 @bastla , @miniversum , @Biber
Hilfreich für die Community wäre sicher auch die Info für welche Shell der Batch denn laufen soll...
Odyon1
Odyon1 05.03.2024 aktualisiert um 14:16:18 Uhr
Goto Top
hatte ich ja und ist schon ein paar Monate her und bei Biber sogar Jahre.
via cmd (.bat, oder .cmd)
Odyon1
Lösung Odyon1 05.03.2024 um 16:36:01 Uhr
Goto Top
ok Denkfehler gefunden. Da ich die Funktion via call mehrfach aufrufe, muss die Variable "new_variable" auch wieder zurückgesetzt werden:

:setcsv
	set "new_variable="  
	set "count=0"  
	......

falls nicht, kommt es durch:
set "new_variable=!new_variable!!modified_value!	"  
zu einer Verdoppelung der Zeilen. Wird auf gelöst gesetzt.