Ich habe einen Powershell-Code geschrieben, um eine sehr große .txt-Datei zu lesen, bestimmte Zeilen auszuwählen und sie in eine CSV-Datei einzufügen. das Problem ist, dass die Datei wie folgt formatiert ist:Konvertieren von Textdateien in CSV-Dateien
header1: Data1
header2: Data1
header3: Data1
header4: Data1
header1: Data2
header2: Data2
header3: Data2
header4: Data2
und ich brauche es dazu zu konvertieren:
Header1,Header2,Header3,Header4
data1,data1,data1,data1
data2,data2,data2,data2
der Code ist dies:
$path = get-location
$textfile = Get-FileName $env:USERPROFILE\Downloads\
$writefile = "$path\data2.csv"
$reader = [System.IO.File]::OpenText($textfile)
$writer = New-Object System.IO.StreamWriter $writefile
$writer.WriteLine('{0},{1},{2},{3}', "Policy","Schedule Type","Retention Level","Host")
for(;;) {
$line = $reader.ReadLine() #
if ($null -eq $line) {
break
}
$data = $line.Split(":")
if ($null -ne $data[0]) {
$newdata0 = $data[0].trimstart(" ")
}
if ($null -ne $data[1]) {
$newdata1 = $data[1].trimstart(" ")
}
if ($newdata0 -eq "Policy") {$writer.WriteLine('{0},{1},{2},{3}', $newdata1,$null,$null,$null)}
if ($newdata0 -eq "Schedule Type") {$writer.WriteLine('{0},{1},{2},{3}', $null,$newdata1,$null,$null)}
if ($newdata0 -eq "Retention Level") {$writer.WriteLine('{0},{1},{2},{3}', $null,$null,$newdata1,$null)}
if ($newdata0 -eq "Host") {$writer.WriteLine('{0},{1},{2},{3}', $null,$null,$null,$newdata1)}
}
$reader.Close()
$writer.Close()
aber ich am Ende mit diesem (tatsächliche Daten):
Policy,Schedule Type,Retention Level,Host
FS-Win-Servers-Tokyo-DACS_ONLY,,,
,FULL (0),,
,,infinity (9),
,,,opback03e.options-it.com
DB-Win-Exch2013-ADB11,,,
,INCR (1),,
,,6 months (6),
,,,opback03e.options-it.com
DB-Win-Exch2013-MDB11,,,
,INCR (1),,
,,6 months (6),
,,,opback03e.options-it.com
DB-Win-Exch2013-MDB10,,,
,INCR (1),,
,,6 months (6),
,,,opback03e.options-it.com
Ich denke, dass ich über diesen Code falsch bin oder vielleicht nur einen Weg finden muss, um den CSV neu zu formatieren?
ich denke, das wird Ihnen helfen: http://stackoverflow.com/a/8970351/5341953 – notgiorgi
Dank aber Ich habe die CSV-Datei. Das Problem ist in meinem Code, ich kann die Daten nicht auf eine Zeile der CSV schreiben. Es schreibt in die richtige Spalte, aber ich weiß, wie man die Daten in derselben Zeile bekommt. – user2026188