Bestimmte Teile eines String mit FOR-Schleife auslesen
Hallo,
ich habe eine Textdatei mit folgendem Inhalt (Beispiel):
Damit ich diese Daten als Input-Daten in einer anderen Anwendung nutzen kann, bräuchte ich diese Daten allerdings in der folgenden Form:
Ich habe bereits (leider erfolglos) versucht per FOR-Schleife den Ausgangstext zu zerlegen (z.B. mit set "str=%zeile:~3,5%", ...) und geändert in einer neuen Datei wieder zusammenzusetzen.
Wie ist das hinzubekommen?
Vielen Dank im Voraus und Gruß
Markus
ich habe eine Textdatei mit folgendem Inhalt (Beispiel):
"XX1100","00471","20210214","20210214","","","","0010","","","","","","","","","","","","",""
"XX1100","01234","20210411","20210411","","","","0010","","","","","","","","","","","","",""
"XX1100","05555","20210510","20210510","","","","0010","","","","","","","","","","","","",""
"XX1100","10833","20210614","20210614","","","","0010","","","","","","","","","","","","",""
Damit ich diese Daten als Input-Daten in einer anderen Anwendung nutzen kann, bräuchte ich diese Daten allerdings in der folgenden Form:
00000471 14.02.21 14.02.21 0010
00001234 11.04.21 11.04.21 0010
00005555 10.05.21 10.05.21 0010
00010833 14.06.21 14.06.21 0010
Ich habe bereits (leider erfolglos) versucht per FOR-Schleife den Ausgangstext zu zerlegen (z.B. mit set "str=%zeile:~3,5%", ...) und geändert in einer neuen Datei wieder zusammenzusetzen.
Wie ist das hinzubekommen?
Vielen Dank im Voraus und Gruß
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1648920723
Url: https://administrator.de/contentid/1648920723
Ausgedruckt am: 08.11.2024 um 07:11 Uhr
3 Kommentare
Neuester Kommentar
Hi
mit Powershell ein leichtes
mit Powershell ein leichtes
$inCSV = "c:\temp\input.csv"
$header = "h1","h2","h3","h4","h5","h6","h7","h8"
$import = Import-Csv -Path $inCSV -Delimiter "," -Header $header | Select-Object `
@{Name='h1';Expression={[String]$_.h1}},
@{Name='h2';Expression={[String]$_.h2.PadLeft(8,'0')}},
@{Name='h3';Expression={[datetime]::ParseExact($_.h3,'yyyyMMdd',$null)}},
@{Name='h4';Expression={[datetime]::ParseExact($_.h4,'yyyyMMdd',$null)}},
@{Name='h5';Expression={[String]$_.h5}},
@{Name='h6';Expression={[String]$_.h6}},
@{Name='h7';Expression={[String]$_.h7}},
@{Name='h8';Expression={[String]$_.h8}}
$import | % {
Write-host "$($_.h2) $($_.h3.ToString("dd.MM.yyyy")) $($_.h4.ToString("dd.MM.yyyy")) $($_.h8)"}
Zitat von @SeaStorm:
Das geht auch einfacher.$inCSV = "c:\temp\input.csv"
$header = "h1","h2","h3","h4","h5","h6","h7","h8"
$import = Import-Csv -Path $inCSV -Delimiter "," -Header $header | Select-Object `
@{Name='h1';Expression={[String]$_.h1}},
@{Name='h2';Expression={[String]$_.h2.PadLeft(8,'0')}},
@{Name='h3';Expression={[datetime]::ParseExact($_.h3,'yyyyMMdd',$null)}},
@{Name='h4';Expression={[datetime]::ParseExact($_.h4,'yyyyMMdd',$null)}},
@{Name='h5';Expression={[String]$_.h5}},
@{Name='h6';Expression={[String]$_.h6}},
@{Name='h7';Expression={[String]$_.h7}},
@{Name='h8';Expression={[String]$_.h8}}
$import | % {
Write-host "$($_.h2) $($_.h3.ToString("dd.MM.yyyy")) $($_.h4.ToString("dd.MM.yyyy")) $($_.h8)"}
$Source = "C:\Pfad\zur\Datei"
Foreach ($Line in Get-Content $Source) {
"{0:d8} {1:dd.MM.yy} {2:dd.MM.yy} {3}" -f [int]$Line.Substring(10,5), [datetime]::ParseExact($Line.Substring(18,8),'yyyyMMdd',$null), [datetime]::ParseExact($Line.Substring(29,8),'yyyyMMdd',$null), $Line.Substring(49,4)
}
Oder alternativ mit Import-CSV
$Source = "C:\Pfad\zur\Datei"
Foreach ($Line in Import-CSV -Delimiter ',' -Header (1..8) $Source) {
"{0:d8} {1:dd.MM.yy} {2:dd.MM.yy} {3}" -f [int]$Line.2, [datetime]::ParseExact($Line.3,'yyyyMMdd',$null), [datetime]::ParseExact($Line.4,'yyyyMMdd',$null), $Line.8
}
Gruß Thomas