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

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

Member: colinardo
Solution colinardo Aug 29, 2018, updated at Sep 02, 2018 at 09:46:37 (UTC)
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
Member: freshman2017
freshman2017 Sep 01, 2018 at 21:44:26 (UTC)
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.
Member: colinardo
colinardo Sep 02, 2018 updated at 09:45:25 (UTC)
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.
Member: freshman2017
freshman2017 Sep 02, 2018 updated at 08:04:04 (UTC)
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?
Member: colinardo
Solution colinardo Sep 02, 2018 updated at 09:57:28 (UTC)
Goto Top
Sorry, kleiner Typo, ist oben korrigiert.