Ich versuche, den Inhalt einer CSV-Datei zu kopieren und an eine Textdatei anzuhängen. Das Kopieren und Anhängen funktioniert, aber das angehängte Format ist seltsam.
Dies ist der Befehl, den ich verwende:
Get-Content -Path meineDatei1.csv | Select-object -skip 1 | Out-File meineneueDatei.txt -Anhängen
Der angehängte Text sieht beim Öffnen im Editor folgendermaßen aus:
1 0 2 3 8 9, 1, A B C, P 2
anstatt
102389,1,ABC,P2
Zwischen jedem Zeichen steht ein Leerzeichen. Das bloße Umbenennen der CSV-Datei in eine TXT-Datei hat nicht geholfen.
Antwort1
Versuchen Sie es mitInhalt hinzufügenCmdlet:
Das Cmdlet Add-Content fügt Inhalt an ein angegebenes Element oder eine angegebene Datei an. Sie können den Inhalt angeben, indem Sie ihn in den Befehl eingeben oder ein Objekt angeben, das den Inhalt enthält.
Get-Content -Path myfile1.csv | Select-object -skip 1 | Add-Content mynewfile.txt
Antwort2
Out-File
In PowerShell 5.1 ist die Standardkodierung fürUnicode(UTF16-LE), während in PowerShell 7.x die Standardkodierungutf8Keine Stückliste.
Offensichtlich ist Ihre Eingabedatei anders codiert, etwa mit ASCII oder UTF-8. Und wenn Sie UTF16-LE-Text hinzufügen, ist das Ergebnis das, was Sie erleben.
Out-File hat einen -Encoding
Parameter, daher können Sie Ihren Code korrigieren, indem Sie „OR“ anhängen und anstelle von -Encoding default
verwenden .Add-Content
Out-File
Die Kodierung Default
ist die Kodierung, die der aktiven Codepage des Systems entspricht (normalerweise ANSI).
Add-Content hat auch einen Parameter -Encoding
. In PowerShell 5.1 ist der Standardwert Default
. In PowerShell 7.x ist die Standardkodierung utf8NoBOM
.