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