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
Please also mark the comments that contributed to the solution of the article
Content-Key: 1648920723
Url: https://administrator.de/contentid/1648920723
Printed on: April 24, 2024 at 22:04 o'clock
3 Comments
Latest comment
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