Muszę połączyć dwa pliki binarne za pomocą *.bat
skryptu w systemie Windows.
Jak mogę to osiągnąć?
type
może zastąpić tylko część cat
funkcjonalności (ze względu na rozróżnienie między plikami binarnymi i tekstowymi w systemie Windows).
Muszę połączyć dwa pliki binarne za pomocą *.bat
skryptu w systemie Windows.
Jak mogę to osiągnąć?
type
może zastąpić tylko część cat
funkcjonalności (ze względu na rozróżnienie między plikami binarnymi i tekstowymi w systemie Windows).
Odpowiedzi:
type
Polecenie systemu Windows działa podobnie do systemu UNIX cat
.
Przykład 1:
type file1 file2 > file3
odpowiada:
cat file1 file2 > file3
Przykład 2:
type *.vcf > all_in_one.vcf
To polecenie połączy wszystkie vCard w jedną.
type file1 file2 > file3 2>NUL
Możesz użyć w copy /b
ten sposób:
copy /b file1+file2 destfile
type
przedstawionymi w komentarzach do przyjętej odpowiedzi ... chyba że to rozwiązanie ma podobne wady, ale nie jest wystarczająco popularne, aby ludzie mogli je zauważyć!
Jeśli masz kontrolę nad maszyną, w której pracujesz, zdecydowanie polecam zainstalowanie GnuWin32 . Po prostu „Pobierz wszystko” i pozwól programowi wget pobrać wszystkie pakiety. Będziesz wtedy mieć dostęp do cat, grep, find, gzip, tar, less i setek innych.
GnuWin32 to jedna z pierwszych rzeczy, które instaluję na nowym systemie Windows.
Bezwstydna wtyczka PowerShell (ponieważ myślę, że krzywa uczenia się jest uciążliwa, więc nauczanie czegoś przy każdej okazji może pomóc)
Get-Content file1,file2
Pamiętaj, że type
jest to alias dla Get-Content, więc jeśli bardziej ci się spodoba, możesz napisać:
type file1,file2
type file1 file2 > dest
a każdy z nich wykonano w kilka sekund.
-Encoding UTF8
nic nie zmieniłem.
W wydaniu Redstone 1 systemu Windows 10 system Windows dodał prawdziwy podsystem Linux dla jądra NTOS. Myślę, że pierwotnie miał on obsługiwać aplikacje na Androida, a może scenariusze typu dokerów. Microsoft współpracował z Canonical i dodał prawdziwą natywną powłokę bash. Możesz także użyć menedżera pakietów apt, aby uzyskać wiele pakietów Ubuntu. Na przykład możesz zrobić apt-get gcc, aby zainstalować łańcuch narzędzi GCC, tak jak na Linux-ie.
Gdyby coś takiego istniało podczas studiów, myślę, że mógłbym wykonać większość moich zadań związanych z programowaniem w Uniksie w natywnej powłoce bash Windows.
Jeśli musisz użyć skryptu wsadowego i zainstalować tutaj python, odpowiedzią jest policz w wersji wsadowej i 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())
Jeśli zostanie zapisany jako join.bat, użycie:
join.bat file_one.bin file_two.bin out_file.bin
Dzięki też ta odpowiedź za inspirację.
Próbuję ponownie dołączyć do archiwum tar, które zostało podzielone na serwer Linux.
I znalazłem, że jeśli używam type
w systemie Windows cmd.exe
, spowoduje to, że plik zostanie połączony w niewłaściwej kolejności (tj. type
Czasami najpierw umieści XXXX.ad, a następnie XXXX.ac, XXXX.aa itp.)
Znalazłem więc narzędzie o nazwie bat
GitHub https://github.com/sharkdp/bat, które ma kompilację Windows i ma lepsze podświetlenie kodu, a ważne jest to, że działa dobrze w Windows, aby ponownie dołączyć do archiwum tar!
Szukałem więc podobnego rozwiązania z możliwością zachowania znaków EOL i odkryłem, że nie ma sposobu, więc robię to, co robię najlepiej i robię własną użyteczność. Jest to natywny plik wykonywalny kota dla systemu 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
Nazywam go sharp-cat, ponieważ jest zbudowany w języku C #, możesz skanować za pomocą programu antywirusowego, a kod źródłowy zostanie udostępniony na żądanie
Komenda typu Windows ma problemy, na przykład ze znakami Unicode na granicy 512 bajtów. Wypróbuj kota Cygwina.