Мені потрібно з'єднати два двійкові файли з a *.bat
скриптом у Windows.
Як я можу цього досягти?
type
може замінити лише частину cat
функціональних можливостей (через розрізнення бінарних та текстових файлів у Windows).
Мені потрібно з'єднати два двійкові файли з a *.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 отримати всі пакунки. Тоді ви отримаєте доступ до кота, грепу, знахідки, gzip, дьогтю, менше та сотні інших.
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, а може, і сценарії типу docker. Майкрософт співпрацював з Canonical і додав фактичну вбудовану оболонку bash. Крім того, ви можете використовувати менеджер підходящих пакетів, щоб отримати багато пакетів Ubuntu. Наприклад, ви можете зробити apt-get gcc, щоб встановити ланцюжок інструментів GCC, як це було б у вікні Linux.
Якби таке існувало під час навчання в університеті, я думаю, я міг би виконати більшість завдань програмування Unix у рідній оболонці Windows.
Якщо вам потрібно використати пакетний сценарій і тут встановити 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 і виявив, що немає можливості, тому я роблю те, що я роблю найкраще, і я зробив власну утилізацію. Це рідний кот, який виконується для 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
Я називаю це гостро-котом, оскільки його вбудовано на C #, сміливо скануйте антивірус, а вихідний код буде доступний за запитом
Команда типу Windows має проблеми, наприклад, з символами Unicode на межі 512 байтів. Спробуйте кішку Сігвіна.