freshman2017
Goto Top

Batch oder Powershell für .txt-Datei

Hallo liebe Gemeinde,

ich habe eine .txt-Datei, die aus einer Artikelnummer und einem Bildname bestehen soll.
Ausgangsdatei (export.txt) ist wie folgt aufgebaut:

123.01.02.xxx.xxx.xxx.xxx;(Leer);123.02.02.xxx.xxx.xxx.xxx;(Leer);123.03.03.xxx.xxx.xxx.xxx;(Leer);123.04.04.xxx.xxx.xxx.xxx;(Leer);

Jetzt würde ich gerne erwirken, dass jeweils nach dem ';' der Artikelnummer in Klammern [in der export.txt derzeit als (Leer) vermerkt] steht:

123.01.02.xxx.xxx.xxx.xxx;(Bildnummer:0102);123.02.02.xxx.xxx.xxx.xxx;(Bildnummer:0202);123.03.03.xxx.xxx.xxx.xxx;(Bildnummer:0303);123.04.04.xxx.xxx.xxx.xxx;(Bildnummer:0404);

Hierbei kommen die Werte hinter [Bildnummer] aus der Artikelnummer aus dem 2. & 3 Block. 'Leer' soll also mit bspw. Bildnummer:0202 ersetzt werden.

Hat jemand von Euch schon mal so etwas umgesetzt? Ich freue mich auf Eure Rückmeldungen.

Content-Key: 384800

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

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: colinardo
Lösung colinardo 29.08.2018, aktualisiert am 02.09.2018 um 11:46:37 Uhr
Goto Top
Hat jemand von Euch schon mal so etwas umgesetzt?
Nö, aber Regex ist für sowas immer dein Freund in allen Lebenslagen face-smile.
PS
$file = 'D:\export.txt'  
(gc $file) -replace '(?<=(\A|;)\d+\.(\d+)\.(\d+)[^;]+?;)([^;]*)','(Bildnummer:$2$3)' | sc $file  
Man fragt sich nur immer wer solche Formate für die Tonne überhaupt erst fabriziert face-smile?!

Grüße Uwe
Mitglied: freshman2017
freshman2017 01.09.2018 um 23:44:26 Uhr
Goto Top
Zitat von @colinardo:

Hat jemand von Euch schon mal so etwas umgesetzt?
Nö, aber Regex ist für sowas immer dein Freund in allen Lebenslagen face-smile.
PS
> $file = 'D:\export.txt'  
> (gc $file) -replace '(?<=(\A|\b|;)\d+\.(\d+)\.(\d+)[^;]+?;)([^;]*)','(Bildnummer:$2$3)' | sc $file  
> 
Man fragt sich nur immer wer solche Formate für die Tonne überhaupt erst fabriziert face-smile?!

Grüße Uwe

Hallo Uwe,

vielen Dank für die Hilfestellung.

Ich habe gerade festgestellt, dass es nur korrekt funktioniert, wenn die Artikelnummern nur aus Zahlen in den gefragten 'Stellen' (123.01.02.xxx.xxx.xxx.xxx) bestehen, wie sieht es allerdings aus, wenn es nachfolgendes Format gibt? -> ABC.ZD.KL.xxx.xxx.xxx.xxx
Irgendwie will es bei mir, so nicht funktionieren, wenn ich es ausführe.

Beste Grüße.
Mitglied: colinardo
colinardo 02.09.2018 aktualisiert um 11:45:25 Uhr
Goto Top
wie sieht es allerdings aus, wenn es nachfolgendes Format gibt? -> ABC.ZD.KL.xxx.xxx.xxx.xxx
In dem Fall kleine Anpassung sm Regex Pattern und dann geht auch das natürlich.
$file = 'D:\export.txt'  
(gc $file) -replace '(?<=(\A|;)[a-z\d]+\.([a-z\d+]+)\.([a-z\d]+)[^;]+?;)([^;]*)','(Bildnummer:$2$3)' | sc $file  
Ich war halt davon ausgegangen das nur Zahlen enthalten sind, da sonst keine weiteren Angaben von dir im Post standen.
Mitglied: freshman2017
freshman2017 02.09.2018 aktualisiert um 10:04:04 Uhr
Goto Top
Zitat von @colinardo:

wie sieht es allerdings aus, wenn es nachfolgendes Format gibt? -> ABC.ZD.KL.xxx.xxx.xxx.xxx
In dem Fall kleine Anpassung sm Regex Pattern und dann geht auch das natürlich.
> $file = 'D:\export.txt'  
> (gc $file) -replace '(?<=(\A|\b|;)[a-z\d]+\.([a-z\d+]+)\.([a-z\d]+)[^;]+?;)([^;]*)','(Bildnummer:$2$3)' | sc $file  
> 
Ich war halt davon ausgegangen das nur Zahlen enthalten sind, da sonst keine weiteren Angaben von dir im Post standen.

Guten Morgen Uwe,

ich habe es gerade eben mal getestet und stehe irgendwie auf dem Schlauch... habe es mit nachfolgender .txt - Datei geprüft:

ABC.ZD.KL.xxx.xxx.xxx.xxx;(Leer);ABC.ZD.KL.xxx.xxx.xxx.xxx;(Leer);

Nachfolgende Ausgabe habe ich bekommen:

ABC.ZD.KL.xxx.xxx.xxx.xxx;(BildNummer:xxxxx);ABC.ZD.KL.xxx.xxx.xxx.xxx;(BildNummer:xxxxx);

dabei habe ich nachfolgenden Code genutzt:

$file = 'C:\Users\user01\export.txt'  
(gc $file) -replace '(?<=(\A|\b|;)[a-z\d]+\.([a-z\d+]+)\.([a-z\d]+)[^;]+?;)([^;]*)','(BildNummer:$2$3)' | sc $file  

Hast Du da noch einen Tipp für mich?
Mitglied: colinardo
Lösung colinardo 02.09.2018 aktualisiert um 11:57:28 Uhr
Goto Top
Sorry, kleiner Typo, ist oben korrigiert.