Powershell で csv ファイルからテキスト ファイルにテキストを追加する

Powershell で csv ファイルからテキスト ファイルにテキストを追加する

csv ファイルの内容をコピーしてテキスト ファイルに追加しようとしています。コピーと追加は機能しますが、追加された形式が奇妙です。

私が使用するコマンドは次のとおりです:

Get-Content -Path myfile1.csv | Select-object -skip 1 | Out-File mynewfile.txt -Append

追加されたテキストをメモ帳で開くと、次のようになります。

1 0 2 3 8 9, 1, A B C, P 2

の代わりに

102389,1,ABC,P2

すべての文字の間にスペースがあります。.csv を .txt に名前変更しただけでは効果はありませんでした。

答え1

使ってみるコンテンツの追加コマンドレット:

Add-Content コマンドレットは、指定された項目またはファイルにコンテンツを追加します。コマンドにコンテンツを入力するか、コンテンツを含むオブジェクトを指定して、コンテンツを指定できます。

Get-Content -Path myfile1.csv | Select-object -skip 1 | Add-Content mynewfile.txt

答え2

PowerShell 5.1では、デフォルトのエンコーディングOut-Fileユニコード(UTF16-LE)ですが、PowerShell 7.xではデフォルトのエンコードはutf8BOMなしどうやら
、入力ファイルは ASCII や UTF-8 のように異なる方法でエンコードされており、UTF16-LE テキストを追加すると、このような結果になります。

Out-File にはパラメータがあるため、の代わりにOR を使用して-Encodingコードを修正できます。-Encoding defaultAdd-ContentOut-File

エンコーディングはDefault、システムのアクティブなコード ページ (通常は ANSI) に対応するエンコーディングです。Add
-Content にはパラメーター もあります-Encoding。PowerShell 5.1 では、既定値はですDefault。PowerShell 7.x では、既定のエンコーディングは ですutf8NoBOM

関連情報