Я пытаюсь воспроизвести функциональность cat
команды в Unix.
Я бы хотел избежать решений, в которых я явно считываю оба файла в переменные, объединяю переменные вместе, а затем записываю объединенную переменную.
источник
Я пытаюсь воспроизвести функциональность cat
команды в Unix.
Я бы хотел избежать решений, в которых я явно считываю оба файла в переменные, объединяю переменные вместе, а затем записываю объединенную переменную.
Вы можете просто использовать cat example1.txt, example2.txt | sc examples.txt
. Вы также можете объединить более двух файлов с этим стилем. Кроме того, если файлы названы одинаково, вы можете использовать:
cat example*.txt | sc allexamples.txt
Это cat
псевдоним для Get-Content
и sc
является псевдонимом для Set-Content
.
Примечание 1 : будьте осторожны с последним методом - если вы попытаетесь выполнить вывод в examples.txt
(или аналогичный, соответствующий шаблону), PowerShell попадет в бесконечный цикл! (Я только что это проверил).
Примечание 2 : при выводе в файл >
кодировка символов не сохраняется! Вот почему рекомендуется использовать Set-Content
( sc
).
Set-Content
используется национальная кодовая страница (например, Windows-1252 для английского языка). Если исходные файлы содержат другую кодировку (например, Windows-1251 или UTF8), вы должны установить правильную кодировкуsc file.txt -Encoding UTF8
(числа, такие как 1251 для русского языка, поддерживаются сAdd-Content
том, что если вы запустите команду дважды, агрегированный файл будет вдвое длиннее. Хорошая замена естьOut-File
. Пример здесьGet-Content my.bin -Raw | Set-Content my.bin -NoNewline
не будет изменяться,my.bin
кроме отметок времени.-Raw
сохраняет любые байты CR / LF,-NoNewline
не позволяя PowerShell добавлять собственные байты CR / LF.Не использовать
>
; это портит кодировку символов. Использование:источник
cat
это псевдоним дляGet-Content
.ÿþ
что находитсяFF FE
в начале моего объединенного файла при использовании>
.В
cmd
, вы можете сделать это:В PowerShell это будет:
Хотя в PowerShell можно использовать gc , описанное выше будет довольно быстрым, особенно для больших файлов. И его можно использовать с файлами, отличными от ASCII, с помощью
/B
переключателя.источник
Вы можете использовать командлет Add-Content . Возможно, это немного быстрее, чем другие решения, потому что я не получаю содержимое первого файла.
источник
gc
относится?gc
это псевдоним для Get-ContentЧтобы объединить файлы в командной строке, это будет
PowerShell преобразует
type
команду вGet-Content
, что означает, что вы получите сообщение об ошибке при использованииtype
команды в PowerShell, потому что дляGet-Content
команды требуется запятая, разделяющая файлы. Та же команда в PowerShell будетисточник
Если вам нужно упорядочить файлы по определенному параметру (например, дате и времени):
источник
Я использовал:
К этому добавлен штраф. Я добавил кодировку ASCII, чтобы удалить нулевые символы, которые Notepad ++ показывал без явной кодировки.
источник
Вы можете сделать что-то вроде:
Где
>
псевдоним для "out-file", а >> - псевдоним для "out-file -append".источник
Поскольку большинство других ответов часто имеют неправильное форматирование (из-за конвейера), безопаснее всего сделать следующее:
Я знаю, что вы хотели избежать чтения содержимого $ SomeAdditionalFile в переменной, но, чтобы сохранить, например, форматирование новой строки, я не думаю, что есть правильный способ обойтись без этого.
Обходной путь заключается в том, чтобы перебрать ваш $ SomeAdditionalFile построчно и передать его в ваш $ YourMasterFile. Однако это слишком ресурсоемко.
источник
Чтобы сохранить кодировку и окончания строк:
Примечание. AFAIR, параметры которого не поддерживаются старыми оболочками Powershell (<3? <4?)
источник
Я думаю, что "способ PowerShell" может быть таким:
источник