Apakah ada pengganti untuk kucing di Windows

309

Saya perlu menggabungkan dua file biner dengan *.batskrip di Windows.

Bagaimana saya bisa mencapainya?

Artem Tikhomirov
sumber
15
Pertanyaan judul dan pertanyaan uraian Anda tidak sepenuhnya sinkron. tipe akan menjadi jawaban terbaik untuk pertanyaan judul dan salin / b akan menjadi jawaban terbaik untuk pertanyaan deskripsi. Anda mungkin ingin mengubah judul itu jika memungkinkan.
Joseph
2
@ Joseph typehanya dapat menggantikan sebagian dari catfungsi (karena perbedaan antara file biner dan teks pada Windows).
jfs
Duplikat silang: superuser.com/q/434870/52365
GSerg

Jawaban:

452

typePerintah Windows bekerja mirip dengan UNIX cat.

Contoh 1:

type file1 file2 > file3

setara dengan:

cat file1 file2 > file3

Contoh 2:

type  *.vcf > all_in_one.vcf  

Perintah ini akan menggabungkan semua kartu menjadi satu.

Nathan Jones
sumber
1
Masalah dengan tipe dalam situasi ini adalah ia menambahkan header file yang tidak diinginkan ketika mengetik lebih dari satu file yang ditentukan pada baris perintah.
Greg Hewgill
2
Ketika menentukan lebih dari satu file pada baris perintah, ketik output beberapa baris kosong dan nama file, sebelum menyalin isi file. Cobalah :)
Greg Hewgill
3
Ah, saya tidak memperhatikan bahwa header pergi ke stderr. Senang mendengarnya.
Greg Hewgill
1
perhatikan bahwa ketik dengan panah (seperti di atas) tidak berfungsi dengan file besar (seperti> 2 GB atau 4), setidaknya dengan XP. Anda dapat menggunakan perintah "copy", (lihat jawaban lain).
rogerdpack
2
Kiat lain: untuk menghindari menampilkan keluaran laintype file1 file2 > file3 2>NUL
Mike T
85

Anda bisa menggunakan copy /bseperti ini:

copy /b file1+file2 destfile
Greg Hewgill
sumber
5
untuk urutan file Anda dapat menggunakan wildcard seperti "copy / b file * destfile"
Stalinko
aneh bagi saya bahwa ini bukan jawaban yang diterima, mengingat masalah yang tampak dengan typedijabarkan dalam komentar pada jawaban yang diterima ... kecuali solusi ini memiliki kelemahan serupa tetapi tidak cukup populer bagi orang untuk mencatatnya!
Jony Thrive
23

Jika Anda memiliki kendali atas mesin tempat Anda melakukan pekerjaan Anda, saya sangat menyarankan untuk menginstal GnuWin32 . Cukup "Unduh Semua" dan biarkan program wget mengambil semua paket. Anda kemudian akan memiliki akses ke kucing, grep, temukan, gzip, tar, kurang, dan ratusan lainnya.

GnuWin32 adalah salah satu hal pertama yang saya instal pada kotak Windows baru.

David Citron
sumber
Saya akan merekomendasikan GetGnuWin32 (untuk mempermudah instalasi)
jfs
3
Jika menggunakan utilitas eksternal dapat diterima, saya lebih suka busybox untuk Windows yang merupakan exe tunggal ~ 600 kB menggabungkan ~ 30 utilitas Unix. Satu-satunya perbedaan adalah bahwa seseorang harus menggunakan perintah "busybox cat" alih-alih "cat" sederhana
Fr0sT
12

Steker PowerShell Shameless (karena saya pikir kurva belajar itu menyebalkan, jadi mengajarkan sesuatu di setiap kesempatan dapat membantu)

Get-Content file1,file2

Perhatikan bahwa typeini adalah alias untuk Konten-Get, jadi jika Anda lebih menyukainya, Anda dapat menulis:

type file1,file2
Jay Bazuzi
sumber
1
Itu bekerja, tapi anjingnya lambat. Saya menemukan pertanyaan ini sambil duduk menunggu PowerShell untuk menggabungkan beberapa file video besar yang memakan waktu setengah jam per file. Saya membunuh proses dan mencobanya dengan cmd menggunakan type file1 file2 > destdan masing-masing dilakukan dalam hitungan detik.
stib
Itu mengkonversi file saya menjadi UTF-16, untuk beberapa alasan. -Encoding UTF8tidak mengubah apa pun.
John Dvorak
5

Cukup gunakan perintah salin dos dengan beberapa file sumber dan satu file tujuan.

copy file1+file2 appendedfile

Anda mungkin memerlukan opsi / B untuk file biner

simon
sumber
2

Dalam rilis Redstone 1 Windows 10, Windows menambahkan subsistem Linux nyata untuk kernel NTOS. Saya pikir awalnya ini dimaksudkan untuk mendukung aplikasi Android, dan mungkin skenario tipe buruh pelabuhan. Microsoft bermitra dengan Canonical dan menambahkan shell bash asli yang sebenarnya. Anda juga dapat menggunakan manajer paket apt untuk mendapatkan banyak paket Ubuntu. Misalnya, Anda dapat melakukan apt-get gcc untuk menginstal rantai alat GCC seperti yang Anda lakukan pada kotak Linux.

Jika hal seperti itu ada ketika saya masih di universitas, saya pikir saya bisa melakukan sebagian besar tugas pemrograman Unix saya di shell Windows asli.

sam msft
sumber
1

Jika Anda hanya ingin menambahkan teks ke akhir file yang ada, Anda dapat menggunakan pipa >>. ex:

echo new text >>existingFile.txt
Jahmic
sumber
0

Jika Anda harus menggunakan skrip batch dan memasang python di sini adalah jawaban polygot dalam batch dan 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())

Jika disimpan sebagai join.bat, penggunaannya adalah:

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

Terima kasih juga jawaban ini untuk inspirasi.

Noelkd
sumber
0

Saya mencoba untuk bergabung kembali dengan arsip tar yang telah dibelah di server Linux.

Dan saya menemukan jika saya gunakan typedi Windows cmd.exe, itu akan menyebabkan file bergabung dengan urutan yang salah. (Mis. typeKadang-kadang akan menempatkan XXXX.ad pada awalnya dan kemudian XXXX.ac, XXXX.aa dll ...)

Jadi, saya menemukan alat bernama batGitHub https://github.com/sharkdp/bat yang memiliki Windows build, dan memiliki highlight kode yang lebih baik dan yang penting adalah, ia berfungsi dengan baik pada Windows untuk bergabung kembali dengan arsip tar!

Aaron Xu
sumber
0

Jadi saya sedang mencari solusi yang sama dengan kemampuan untuk melestarikan karakter EOL dan menemukan tidak ada cara, jadi saya melakukan apa yang saya lakukan dan membuat utillity saya sendiri. Ini adalah cat asli yang dapat dieksekusi untuk 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

Saya menyebutnya sharp-cat karena dibangun dengan C #, jangan ragu untuk memindai dengan antivirus dan kode sumber akan tersedia berdasarkan permintaan

Ricky Divjakovski
sumber
-1

Perintah tipe Windows memiliki masalah, misalnya dengan karakter Unicode pada batas 512 byte. Coba kucing Cygwin.

user42391
sumber