Importdatei erstellen aus Drittsystem

TylerDurden69

Newbie
Dabei seit
Dez. 2018
Beiträge
6
Hallo Zusammen,

ich benötige eure Hilfe bei einem Import in mein CMS System.
Ich bekomme mehrere .TXT mit insgesamt 4 Variablen:

Bsp1.txt:
1FA6P8CF6J5134249
Gärtner, Josef
MY-GD 15
45124

Bsp2.txt:
2FA6P8CF6J5134249
Gärtner, Hans
MY-GD 16
45125


Um es in mein System importieren zu können, benötige ich dieses bestimmtes Format:
@FOLDER,FN:FahrgestellNr,FN:KundenName,FN:AmtlKennzeichen,FN:KundenNr,BI:2001
^1FA6P8CF6J5134249^,^Gärtner, Josef^,^MY-GD 15^,^45124^,^1FA6P8CF6J5134249.pdf^
^2FA6P8CF6J5134249^,^Gärtner, Hans^,^MY-GD 16^,^45125^,^2FA6P8CF6J5134249.pdf^

Kann mir Jemand sagen wie ich das mit einem BATCH oder sonst wie bewerkstelligen kann?
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.683
Du hast also hunderte *.txt in dem Format und willst alle in dieses CSV-Format bringen?
 

Ash1983

Lt. Junior Grade
Dabei seit
Apr. 2012
Beiträge
334
Suchen & Ersetzen.

Suche nach \r\n und ersetze dies durch ein Komma. Die Zirkumflexe wirst du nicht benötigen, das sollte die Zielsoftware vermutlich können, aber über die verrätst du ja nichts.

edit: GREP könnte hier auch funktionieren.
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.683
Als *.ps1 speichern und mit Rechtsklick "mit Powershell ausführen" starten:
Code:
$output = ("{0:yyyy-MM-dd-HH-mm-ss}" -f (Get-Date)) + ".csv"

"@FOLDER,FN:FahrgestellNr,FN:KundenName,FN:AmtlKennzeichen,FN:KundenNr,BI:2001" > $output

Get-ChildItem *.txt | % {
  "^" + ((Get-Content -Raw $_) -replace "[\r\n]+","^,^") + "^" >> $output
}
Das speichert dir dann aus allen *.txt im aktuellen Ordner eine CSV in dem Format.
 

TylerDurden69

Newbie
Ersteller dieses Themas
Dabei seit
Dez. 2018
Beiträge
6
funktioniert prima! Vielen Dank !!!
Ergänzung ()

Hallo Yuuri,

ist es irgendwie möglich die erzeugte Datei gleich zu benennen wie originale TXT?
 
Zuletzt bearbeitet:

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.683
Wenn du hunderte Dateien zusammenwirfst, geht das "gleich" schlecht. Wie ist denn das Format? Also gibts bspw. <stamm name>_<fortlaufende nr>.txt als Muster oder irgendwas?
 

TylerDurden69

Newbie
Ersteller dieses Themas
Dabei seit
Dez. 2018
Beiträge
6
Leider ist der Dateiname immer unterschiedlich...
Der Dateiname steht aber immer in der ersten Zeile in der TXT.
Wäre es Möglich diese erste Zeile auszulesen und diesen als Dateinamen zu verwenden?
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.683
In Bsp1.txt also 1FA6P8CF6J5134249?
 

Yuuri

Fleet Admiral
Dabei seit
Okt. 2010
Beiträge
12.683
Code:
$output = $null
$toNatural = { [regex]::Replace($_, '\d+', { $args[0].Name.PadLeft( 20 ) }) }
$header = "@FOLDER,FN:FahrgestellNr,FN:KundenName,FN:AmtlKennzeichen,FN:KundenNr,BI:2001"

Get-ChildItem *.txt | Sort-Object $toNatural | % {
  if( $null -eq $output )
  {
    $id = (Get-Content $_ | Select-Object -First 1).ToString().Trim()
    if( ![string]::IsNullOrEmpty( $id ) )
    {
      $output = "$id.csv"
      $header > $output
    }
  }
  if( $null -ne $output )
  {
    "^" + ((Get-Content -Raw $_) -replace "[\r\n]+","^,^") + "^" >> $output
  }
}
Dann erstellt er dir den Dateinamen anhand der ersten Zeile der ersten Datei.
 
Top