Мне нужно объединить два бинарных файла с помощью *.bat
скрипта на Windows.
Как я могу этого достичь?
type
может заменить только часть cat
функциональности (из-за различия между двоичными и текстовыми файлами в Windows).
Мне нужно объединить два бинарных файла с помощью *.bat
скрипта на Windows.
Как я могу этого достичь?
type
может заменить только часть cat
функциональности (из-за различия между двоичными и текстовыми файлами в Windows).
Ответы:
type
Команда Windows работает аналогично UNIX cat
.
Пример 1:
type file1 file2 > file3
эквивалентно:
cat file1 file2 > file3
Пример 2:
type *.vcf > all_in_one.vcf
Эта команда объединит все карты в одну.
type file1 file2 > file3 2>NUL
Вы можете использовать copy /b
как это:
copy /b file1+file2 destfile
type
изложенные в комментариях к принятому ответу ... если только это решение не имеет подобных недостатков, но недостаточно популярно, чтобы люди могли их заметить!
Если у вас есть контроль над машиной, на которой вы выполняете свою работу, я настоятельно рекомендую установить GnuWin32 . Просто «Скачать все» и позвольте программе wget получить все пакеты. После этого вы получите доступ к cat, grep, find, gzip, tar, less и сотням других.
GnuWin32 - это одна из первых вещей, которую я устанавливаю на новую Windows-коробку.
Бесстыдный плагин PowerShell (потому что я считаю, что кривая обучения - это боль, поэтому обучение чему-либо при любой возможности может помочь)
Get-Content file1,file2
Обратите внимание, что type
это псевдоним для Get-Content, поэтому, если он вам больше нравится, вы можете написать:
type file1,file2
type file1 file2 > dest
и все было сделано в считанные секунды.
-Encoding UTF8
ничего не изменилось
В выпуске Redstone 1 для Windows 10 Windows добавила настоящую подсистему Linux для ядра NTOS. Я думаю, что изначально он был предназначен для поддержки приложений Android, и, возможно, сценариев типа докера. Microsoft установила партнерские отношения с Canonical и добавила настоящую оболочку Bash. Также вы можете использовать менеджер пакетов apt для получения многих пакетов Ubuntu. Например, вы можете выполнить команду apt-get gcc, чтобы установить цепочку инструментов GCC, как это делается в Linux.
Если бы такая вещь существовала, когда я учился в университете, я думаю, что мог бы выполнить большинство моих заданий по программированию для Unix в собственной оболочке Windows bash.
Если вам нужно использовать пакетный сценарий и установить 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
Спасибо также этот ответ за вдохновение.
Я пытаюсь присоединиться к архиву tar, который был разбит на сервере Linux.
И я обнаружил, что если я использую type
в Windows cmd.exe
, это приведет к тому, что файл будет объединен в неправильном порядке (то есть type
иногда сначала ставит XXXX.ad, а затем XXXX.ac, XXXX.aa и т. Д.)
Итак, я нашел инструмент с именем bat
в GitHub https://github.com/sharkdp/bat, который имеет сборку Windows и имеет лучшее выделение кода, и важно то, что он отлично работает на Windows, чтобы присоединиться к архиву tar!
Поэтому я искал похожее решение с возможностью сохранения символов EOL и обнаружил, что нет никакого способа, поэтому я делаю то, что умею лучше всего, и делаю свою собственную утилиту. Это исполняемый файл native cat для windows - https: // mega. пг / #! 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 #, не стесняйтесь сканировать его антивирусом, а исходный код будет доступен по запросу.