Batch - Zeilen anhand bestimmten Wert duplizieren
Guten Morgen,
mit nachfolgendem Skript kann ich aufgrund der Werte aus der letzten Spalte die Zeilen duplizieren:
Source-File ist wie folgt:
Target-File wie folgt:
Meine Source-File hat einen neuen Aufbau bekommen:
Jetzt weiß ich nicht, wie ich mit oben dargestellten Skript das ganze anpassen kann, dass ich folgendes Target-File bekomme:
Kann mir da jemand helfen?
Beste Grüße!
mit nachfolgendem Skript kann ich aufgrund der Werte aus der letzten Spalte die Zeilen duplizieren:
@echo off
SETLOCAL EnableDelayedExpansion
set "source=C:\Users\User01\Files\source.csv"
set "target=C:\Users\User01\Files\target.csv"
>"%target%" (
for /f "usebackq tokens=1,2,3,4,5,6,7,8,9,10,* delims=;" %%a in ("%source%") DO (
set "z=0"
for %%s in (%%k) do set "nr=%%s"
for %%u in (%%k) do (
set /a i+=1
if !i! leq !nr! echo %%a;%%b;%%c;%%d;%%e;%%f;%%g;%%h;%%i;%%j;%%u;;;;;;;;;;;;;;;!nr!;
)
)
)
type "%target%"
Source-File ist wie folgt:
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;1A;2B;3C;4;5;6;7;8;9;10;11;12;13;14;15;
Target-File wie folgt:
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;1A;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;2B;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;3C;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;4;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;5;;;;;;;;;;;;;;;5;
Meine Source-File hat einen neuen Aufbau bekommen:
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;1A;2B;3C;4;5;6;7;8;9;10;11;12;13;14;15;1.00;2.00;3.00;4.00;5.00;6.00;7.00;8.00;9.00;10.00;11.00;12.00;13.00;14.00;15.00;5;
Jetzt weiß ich nicht, wie ich mit oben dargestellten Skript das ganze anpassen kann, dass ich folgendes Target-File bekomme:
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;1A;1.00;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;2B;2.00;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;3C;3.00;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;4;4.00;;;;;;;;;;;;;;;5;
VALUE1;VALUE2;VALUE3;VALUE4;VALUE5;VALUE6;VALUE7;VALUE8;VALUE9;VALUE10;5;5.00;;;;;;;;;;;;;;;5;
Beste Grüße!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 592035
Url: https://administrator.de/forum/batch-zeilen-anhand-bestimmten-wert-duplizieren-592035.html
Ausgedruckt am: 12.04.2025 um 03:04 Uhr
5 Kommentare
Neuester Kommentar

Watt für'n "Quarkformat" 
Mit der PS
Mit der PS
gc 'C:\Users\User01\Files\source.csv' | %{
$cols = $_.split(";")
1..$cols[-2]| %{
"$($cols[0..9] -join ';');$($cols[(9+$_)] -join ';');$($cols[(24+$_)] -join ';');;;;;;;;;;;;;;;$($cols[-2]);"
}
} | sc "C:\Users\User01\Files\target.csv"

Zitat von @freshman2017:
Leider bekomme ich eine Fehlermeldung, dass der Pfad unter gc nicht gefunden werden kann. Woran kann es liegen?
Zu wenig Rechte oder ein Tippfehler. Das ist Powershell, nur so nebenbei falls du das nicht gesehen haben solltest.Leider bekomme ich eine Fehlermeldung, dass der Pfad unter gc nicht gefunden werden kann. Woran kann es liegen?
Läuft hier einwandfrei, mit deinen Daten getestet!

powershell -EP ByPass -C "gc 'C:\Users\User01\Files\source.csv' | %%{$cols = $_.split(';');1..$cols[-2] | %%{\"$($cols[0..9] -join ';');$($cols[(9+$_)] -join ';');$($cols[(24+$_)] -join ';');;;;;;;;;;;;;;;$($cols[-2]);\"}} | sc 'C:\Users\User01\Files\target.csv'"