freshman2017
Goto Top

Möglichkeit per Batch Datensätze zu trennen

Guten Abend,

ich suche mal Euren Rat hier in der Runde, vielleicht kann mir wer helfen?

Eine TXT Datei sieht wie folgt aus:

Muster123 GmbH;1;12;123;1234;12345;123456;1234567;12345678;123456789;12345556789;12345556789;54322782567;62458853787;3486320864;3564268;Firma 1;
Muster123345 GmbH;1;12;123;1234;12345;123456;1234567;12345678;123456789;12345556789;12345556789;54322782567;62458853787;3486320864;3564268;Firma 2;

Jetzt würde ich gerne die Werte wie folgt trennen, damit ich diese weiter bearbeiten kann:

(Dabei soll anhand der letzten Spalte: Firma 1, Firma 2...etc. die Werte wie folgt aufgeteilt werden. Kann das Batch abbilden?)

Muster123 GmbH;1;;;;;;;;;;;;;;;
Muster123 GmbH;12;;;;;;;;;;;;;;;
Muster123 GmbH;123;;;;;;;;;;;;;;;
Muster123 GmbH;1234;;;;;;;;;;;;;;;
Muster123 GmbH;12345;;;;;;;;;;;;;;;
Muster123 GmbH;123456;;;;;;;;;;;;;;;
...
...
...
Muster123345 GmbH;3564268;;;;;;;;;;;;;;;
Muster123345 GmbH;1;;;;;;;;;;;;;;;
Muster123345 GmbH;12;;;;;;;;;;;;;;;
Muster123345 GmbH;123;;;;;;;;;;;;;;;
Muster123345 GmbH;1234;;;;;;;;;;;;;;;
Muster123345 GmbH;12345;;;;;;;;;;;;;;;
Muster123345 GmbH;123456;;;;;;;;;;;;;;;
...
...
...
Muster123345 GmbH;3564268;;;;;;;;;;;;;;;

Content-Key: 602677

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

Printed on: April 19, 2024 at 10:04 o'clock

Member: erikro
Solution erikro Sep 07, 2020 at 19:50:41 (UTC)
Goto Top
Moin,

ist das Absicht, dass in Zeile 10 der höchste Wert, des zweiten DS steht, oder ein Versehen?

Müssen die Semikola da hin? Haben die Spalten Namen?

Das macht man nur mit Batch, wenn man entweder über 60 ist oder schwer masochistisch. face-wink Dafür gibt es Powershell. Ungefähr so:

PARAM (
    $path, # Pfad auf die Originaldatei
    $outpath, #Pfad auf die Ausgabe
    $delimiter = ";"  
)

$numberOfColumns = Get-Content $path | 
       ForEach-Object{($_.split($delimiter)).Count} | 
       Measure-Object -Maximum | 
       Select-Object -ExpandProperty Maximum

$csv = Import-Csv $path -Header (1..$numberOfColumns) -Delimiter $delimiter -Encoding utf8

foreach($dataset in $csv) {

    $i=2
    while($i -lt $numberOfColumns-1) {

        $newData = New-Object PSObject -Property @{

            'Wert' = $dataset.$i  
            'Firma' = $dataset.1  

        }
        $newData | Export-Csv $outpath -Append -Force -Encoding UTF8 -Delimiter ";" -NoTypeInformation  
        $i++

    }
}

hth

Erik
Member: freshman2017
freshman2017 Sep 07, 2020 at 20:06:54 (UTC)
Goto Top
Moin Erik,

die Absicht ist es, dass in der ersten Zeile der Wert aus der zweiten Spalte steht...

...in der zweiten Zeile in der zweiten Spalte der Wert aus der dritten Spalte...

...in der dritten Zeile in der zweiten Spalte der Wert aus der vierten Spalte... usw.
Member: erikro
Solution erikro Sep 07, 2020 at 20:33:09 (UTC)
Goto Top
Zitat von @freshman2017:

Moin Erik,

die Absicht ist es, dass in der ersten Zeile der Wert aus der zweiten Spalte steht...

...in der zweiten Zeile in der zweiten Spalte der Wert aus der dritten Spalte...

...in der dritten Zeile in der zweiten Spalte der Wert aus der vierten Spalte... usw.

Schon klar. Genau das macht mein Skript. Was ist mit den Semikola und was ist mit den Spaltenüberschriften?