Out-File -append в Powershell не создает новую строку и разбивает строку на символы
Я пытаюсь понять какое-то странное поведение с помощью этого командлета.
Если я использую "Out-File -append Filename.txt" в текстовом файле, который я создал и ввел текст, через контекстное меню Windows, строка добавится к последней строке в этом файле, как серию разделенных пробелов символы.
Итак:
"This is a test" | out-file -append textfile.txt
Будет производить:
T h я s я s t t s t t
Это не произойдет, если out файл создает файл, или если в текстовом файле нет текста перед добавлением. Почему это происходит?
Я также хочу отметить, что повторение команды будет просто добавляться таким же образом в одну строку. Я предполагаю, что он не распознает терминатор прерывания строки или прерывания строки или что-то из-за изменения кодировки?
Ответы
Ответ 1
Out-File
по умолчанию используется кодировка Юникода, поэтому вы видите свое поведение. Используйте -Encoding Ascii
, чтобы изменить это поведение. В вашем случае
Out-File -Encoding Ascii -append textfile.txt.
Add-Content
использует Ascii, а также добавляет по умолчанию.
"This is a test" | Add-Content textfile.txt.
Что касается отсутствия новой строки: вы не отправили новую строку, чтобы она не записывала файл в файл.
Ответ 2
Add-Content является ASCII по умолчанию и добавляет новую строку, однако Add-Content также вызывает проблемы с заблокированными файлами.