Есть ли замена коту на Windows

Мне нужно соединить два двоичных файла со сценарием *.bat в Windows.

Как я могу этого добиться?

Ваш вопрос с названием и ваш вопрос с описанием не полностью синхронизированы. type будет лучшим ответом на вопрос заголовка, а copy / b будет лучшим ответом на вопрос описания. Если возможно, вы захотите изменить это название.

Joseph 13.09.2008 10:42

@Joseph type может заменить только часть функциональности cat (из-за различия между двоичными и текстовыми файлами в Windows).

jfs 14.09.2008 02:56

Перекрестный дубликат: superuser.com/q/434870/52365

GSerg 08.07.2019 23:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
323
3
441 632
11
Перейти к ответу Данный вопрос помечен как решенный

Ответы 11

Вы можете использовать copy /b так:

copy /b file1+file2 destfile

для последовательности файлов вы можете использовать подстановочные знаки, такие как "copy / b file * destfile"

Stalinko 12.02.2014 15:21

для меня странно, что это не принятый ответ, учитывая очевидные проблемы с type, изложенные в комментариях к принятому ответу ... если это решение не имеет подобных недостатков, но недостаточно популярно, чтобы люди могли их заметить!

Jony Thrive 19.06.2019 22:00

Спасибо! Работает на меня. По какой-то причине type дважды повторяет содержимое в выходном файле.

UnderBlue592 14.11.2020 03:47

Просто используйте команду dos copy с несколькими исходными файлами и одним файлом назначения.

copy file1+file2 appendedfile

Вам может понадобиться параметр / B для двоичных файлов

Ответ принят как подходящий

Команда Windows type работает аналогично UNIX cat.

Пример 1:

type file1 file2 > file3

эквивалентно:

cat file1 file2 > file3

Пример 2:

type  *.vcf > all_in_one.vcf  

Эта команда объединит все видеокарты в одну.

Проблема с типом в этой ситуации заключается в том, что он добавляет ненужные заголовки файлов при вводе более одного файла, указанного в командной строке.

Greg Hewgill 13.09.2008 05:56

При указании более одного файла в командной строке введите несколько пустых строк и имя файла перед копированием содержимого файла. Попытайся :)

Greg Hewgill 13.09.2008 06:13

Ах, я не заметил, что заголовки идут в stderr. Хорошо знать.

Greg Hewgill 13.09.2008 07:01

обратите внимание, что шрифт со стрелкой (как указано выше) не работает с большими файлами (например,> 2 ГБ или 4), по крайней мере, с XP. Однако вы можете использовать команду «копировать» (см. Другой ответ).

rogerdpack 28.11.2010 02:24

Примечание: Echo поддерживает альтернативные потоки данных. Типа нет. (en.wikipedia.org/wiki/NTFS#Alternate_data_streams_.28ADS.29‌)

WHol 11.09.2015 18:50

Еще один совет: чтобы не показывать другие выходные данные type file1 file2 > file3 2>NUL

Mike T 29.03.2018 00:08

СПАСИБО! Я просто потратил часы на устранение неполадок в Windows. Команда "type" = "cat" - это ответ. Спасибо, что поделились этим. :)

rcfmonarch 14.12.2018 16:44

type (PowerShell) преобразовал мои текстовые файлы в UTF-16. Есть ли способ предотвратить это?

John Dvorak 10.05.2019 15:48

Бесстыдный плагин PowerShell (потому что я думаю, что кривая обучения - это боль, поэтому обучение чему-либо при любой возможности может помочь)

Get-Content file1,file2

Обратите внимание, что type - это псевдоним для Get-Content, поэтому, если он вам больше нравится, вы можете написать:

type file1,file2

Это работает, но собачья медлительность. Я нашел этот вопрос, сидя в ожидании, пока PowerShell объединит несколько больших видеофайлов, что занимало полчаса на файл. Я убил процесс и попробовал его с помощью cmd, используя type file1 file2 > dest, и каждый из них был выполнен за секунды.

stib 23.01.2015 04:59

остерегайтесь, PowerShell может повредить ваши двоичные файлы, например, '\n' может быть заменен на '\r\n'

jfs 02.02.2016 12:03

По какой-то причине он преобразовал мои файлы в UTF-16. -Encoding UTF8 ничего не менял.

John Dvorak 10.05.2019 15:57

Если у вас есть контроль над машиной, на которой вы выполняете свою работу, я настоятельно рекомендую установить GnuWin32. Просто «Загрузить все» и позвольте программе wget получить все пакеты. После этого у вас будет доступ к cat, grep, find, gzip, tar, less и сотням других.

GnuWin32 - одна из первых вещей, которые я устанавливаю на новый компьютер с Windows.

Я бы порекомендовал GetGnuWin32 (для упрощения установки)

jfs 14.09.2008 02:59

Если допустимо использование внешней утилиты, я бы предпочел busybox для Windows, который представляет собой один исполняемый файл размером ~ 600 КБ, включающий ~ 30 утилит Unix. Единственная разница в том, что нужно использовать команду "busybox cat" вместо простой "cat".

Fr0sT 10.01.2014 17:59

Если вы просто хотите добавить текст в конец существующего файла, вы можете использовать вертикальную черту >>. бывший:

echo new text >>existingFile.txt

Если вам нужно использовать пакетный скрипт и у вас установлен python, вот ответ полигот в пакетном режиме и на python:

1>2# : ^
'''
@echo off
python "%~nx0" " %~nx1" "%~nx2" "%~nx3"
exit /b
rem ^
'''
import sys
import os

sys.argv = [argv.strip() for argv in sys.argv]
if len(sys.argv) != 4:
    sys.exit(1)

_, file_one, file_two, out_file = sys.argv

for file_name in [file_one, file_two]:
    if not os.path.isfile(file_name):
        print "Can't find: {0}".format(file_name)
        sys.exit(1)

if os.path.isfile(out_file):
    print "Output file exists and will be overwritten"

with open(out_file, "wb") as out:
    with open(file_one, "rb") as f1:
        out.write(f1.read())

    with open(file_two, "rb") as f2:
        out.write(f2.read())

Если сохранить как join.bat, использование будет:

join.bat file_one.bin file_two.bin out_file.bin

Спасибо также этот ответ за вдохновение.

В выпуске Windows 10 Redstone 1 Windows добавила настоящую подсистему Linux для ядра NTOS. Я думаю, что изначально он был предназначен для поддержки приложений Android и, возможно, сценариев типа докеров. Microsoft объединилась с Canonical и добавила настоящую собственную оболочку bash. Кроме того, вы можете использовать менеджер пакетов apt, чтобы получить множество пакетов Ubuntu. Например, вы можете выполнить команду apt-get gcc для установки цепочки инструментов GCC, как если бы вы использовали Linux.

Если бы такая вещь существовала, пока я учился в университете, я думаю, что мог бы выполнять большую часть своих заданий по программированию Unix в собственной оболочке Windows bash.

Я пытаюсь снова подключиться к tar-архиву, который был разделен на сервере Linux.

И я обнаружил, что если я использую type в Windows cmd.exe, это приведет к тому, что файл будет соединен в неправильном порядке (например, type иногда сначала помещает XXXX.ad, а затем XXXX.ac, XXXX.aa и т. д.)

Итак, я нашел инструмент с именем bat в GitHub https://github.com/sharkdp/bat, который имеет сборку Windows и лучшую подсветку кода, и, что важно, он отлично работает в Windows, чтобы повторно присоединиться к tar-архиву!

Итак, я искал аналогичное решение с возможностью сохранения символов EOL и обнаружил, что нет никакого способа, поэтому я делаю то, что у меня получается лучше всего, и создал свою собственную утилиту. Это родной исполняемый файл cat для Windows - https://mega.nz/#!6AVgwQhL!qJ1sxx-tLtpBkPIUx__iQDGKAIfmb21GHLFerhNoaWk

Usage: cat file1 file2 file3 file4 -o output.txt
-o | Specifies the next arg is the output, we must use this rather than ">>" to preserve the line endings

Я называю его sharp-cat, поскольку он построен на C#, не стесняйтесь сканировать антивирусом, и исходный код будет доступен по запросу.

У команды типа Windows есть проблемы, например, с символами Unicode на границе 512 байт. Попробуйте кота Сигвина.

Другие вопросы по теме