sombetzki
Goto Top

Powershell: Suchen und Ersetzen von Teilen einer Textdatei

Hallo Zusammen,

ich benötige bitte eure Hilfe.
Bin beim Thema Scripting sehr sehr schlecht bewandert.

Aufgabenstellung:
Es muss in einer Datei ( Beispiel : "50992029_SHIPPED" ohne Endung und die Zahl ändert sich bei jeder neuen Datei)
in einem x Beliebigen Pfad z.b.: C:\Versand
eine bestimmte Anfangszahl gesucht werden und zwar "484665" von tracking_id=.

Text der 50992029_SHIPPED Datei:

tracking_id=48466503860
tracking_url=https://tracking.dpd.de/parcelstatus/?query=48466503860&locale=de_DE
shipping_provider=Paketdienst DPD

Falls diese gefunden wird muss die Nummer der tracking_id "48466503860" kopiert werden.
Anschließend sollte mit der kopierten Nummer "48466503860" die "tracking_url=" wie folgt überschrieben werden:

tracking_url=https://gls-group.eu/DE/de/paketverfolgung?match=48466503860

und shipping_provider=Paketdienst DPD in shipping_provider=Paketdienst GLS geändert werden.

Zum Schluss sollte die Datei nach C:\Versand\bearbeitet verschoben werden.

Wunsch wäre das ganze via PowerShell abzuarbeiten.

Habe aber selbst keinen Plan. Würde mir bitte jemand ein Script zusammenstellen.

Vielen Dank

Content-ID: 3940346941

Url: https://administrator.de/forum/powershell-suchen-und-ersetzen-von-teilen-einer-textdatei-3940346941.html

Ausgedruckt am: 23.12.2024 um 00:12 Uhr

3803037559
Lösung 3803037559 14.09.2022 aktualisiert um 19:36:14 Uhr
Goto Top
Moin.
PowerShell Script Hilfe
Arghhh, ich liebe ja diesen Einfallsreichtum bei den Beitragstiteln mittlerweile, würg 🤮 .
$quelle = 'C:\Versand'  
$ziel = 'C:\Versand\bearbeitet'  
Get-ChildItem $quelle -File -Filter "*_SHIPPED" | %{  
    $content = Get-Content $_.FullName -raw
    $id = [regex]::Match($content,'(?i)(?<=tracking_id=)484665\d+').Value  
    if ($id -ne ''){  
        $content -replace '(?<=tracking_url=).*',"https://gls-group.eu/DE/de/paketverfolgung?match=$id" -replace '(?<=shipping_provider=).*',"Paketdienst GLS" | set-content $_.FullName  
    }
    $_ | move-item -Destination $ziel -Force
}
Habe aber selbst keinen Plan.
Wieso wurde dir dann die Aufgabe zugewiesen?

Cheers
certguy
Sombetzki
Sombetzki 14.09.2022 um 18:08:13 Uhr
Goto Top
Hallo certguy,

Habe echt nicht gewusst wie ich das in den Titel unterbringen sollte😰
Kann gerade nicht testen, funktioniert dass auch bei mehreren Dateien in dem Verzeichnis?
3803037559
3803037559 14.09.2022 aktualisiert um 18:16:10 Uhr
Goto Top
Zitat von @Sombetzki:
funktioniert dass auch bei mehreren Dateien in dem Verzeichnis?
Out of the box.
Habe echt nicht gewusst wie ich das in den Titel unterbringen sollte
Äh ja natürlich nicht alles, aber zumindest so dass man weiß worum es prinzipiell im Beitrag geht
"Extrahieren und Ersetzen von Inhalten einer Konfigurationsdatei für den Warenversand"
um das mal als Beispiel zu nennen. Andere die Beiträge suchen sind dankbar für eingehende Titel.
Sombetzki
Sombetzki 14.09.2022 aktualisiert um 20:01:59 Uhr
Goto Top
certguy

leider ist das Ergebniss nicht ganz korrekt.

Ergebniss:

<code tyo=plain>tracking_id=48466503870
tracking_url=https://gls-group.eu/DE/de/paketverfolgung?match=
shipping_provider=Paketdienst GLS

Fehlermeldung
Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

Ausnahme beim Aufrufen von "Match" mit 2 Argument(en):  "")(?i)(?<=tracking_id=)484665.*" wird analysiert - Zu viele  
)-Zeichen."  
In P:\Versand\gls.ps1:5 Zeichen:5
+     $id = [regex]::Match($content,')(?i)(?<=tracking_id=)484665.*').V ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) , MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

und alle andersn Versender die andere Nummern haben werden ebenfalls überschrieben.
3803037559
3803037559 14.09.2022 aktualisiert um 19:21:03 Uhr
Goto Top
Sorry Tippfehler is behoben.
und alle andersn Versender die andere Nummern haben werden ebenfalls überschrieben.
Wir kennen den Inhalt deiner Datei nicht, ich ging nur von obiger Angabe aus
Sombetzki
Sombetzki 14.09.2022 um 19:26:53 Uhr
Goto Top
Bei allen anderen beginnt die Nummer anders.
Müssen diese definiert werden oder kann man auch nur Abfragen wenn 484665 dann ausführen sonst nur verschieben?
3803037559
3803037559 14.09.2022 aktualisiert um 19:31:12 Uhr
Goto Top
Du verwirrst uns hier etwas, gibt es in der Datei mehrere solcher Blöcke mit unterschiedlichen Nummern oder ist in jeder Datei nur jeweils ein solcher Block vorhanden und es sollen nur die Dateien bearbeitet und verschoben werden auf die die Nummer passt?
Sombetzki
Sombetzki 14.09.2022 um 19:36:56 Uhr
Goto Top
In jeder Datei ist jeweils nur ein Block
3803037559
3803037559 14.09.2022 um 19:37:16 Uhr
Goto Top
Check mal das Update von oben.
Sombetzki
Sombetzki 14.09.2022 um 19:37:45 Uhr
Goto Top
Für jedes Paket gibt es eine Datei
Sombetzki
Lösung Sombetzki 14.09.2022 um 19:42:52 Uhr
Goto Top
Perfekt vielen Dank.