Я пытаюсь скопировать содержимое файла 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 default
OR, используя Add-Content
вместо Out-File
.
Кодировка Default
— это кодировка, соответствующая активной кодовой странице системы (обычно ANSI).
Add-Content также имеет параметр -Encoding
. В PowerShell 5.1 по умолчанию используется Default
. В PowerShell 7.x кодировка по умолчанию — utf8NoBOM
.