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!
Please also mark the comments that contributed to the solution of the article
Content-Key: 592035
Url: https://administrator.de/contentid/592035
Printed on: April 25, 2024 at 09:04 o'clock
5 Comments
Latest comment
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'"