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 кодировкой по умолчанию являетсяutf8NoBOM.
По-видимому, ваш входной файл закодирован по-другому, например, с помощью ASCII или UTF-8. и при добавлении в него текста UTF16-LE результат получается тот, что вы видите.

У Out-File есть -Encodingпараметр, поэтому вы можете исправить свой код, добавив -Encoding defaultOR, используя Add-Contentвместо Out-File.

Кодировка Default— это кодировка, соответствующая активной кодовой странице системы (обычно ANSI).
Add-Content также имеет параметр -Encoding. В PowerShell 5.1 по умолчанию используется Default. В PowerShell 7.x кодировка по умолчанию — utf8NoBOM.

Связанный контент