ฉันต้องเข้าร่วมไบนารีไฟล์สองไฟล์ด้วย*.bat
สคริปต์บน Windows
ฉันจะบรรลุสิ่งนั้นได้อย่างไร
type
สามารถแทนที่cat
ฟังก์ชันการทำงานบางส่วนเท่านั้น(เนื่องจากความแตกต่างระหว่างไฟล์ไบนารีและไฟล์ข้อความบน Windows)
ฉันต้องเข้าร่วมไบนารีไฟล์สองไฟล์ด้วย*.bat
สคริปต์บน Windows
ฉันจะบรรลุสิ่งนั้นได้อย่างไร
type
สามารถแทนที่cat
ฟังก์ชันการทำงานบางส่วนเท่านั้น(เนื่องจากความแตกต่างระหว่างไฟล์ไบนารีและไฟล์ข้อความบน Windows)
คำตอบ:
หน้าต่างคำสั่งทำงานคล้ายกับระบบปฏิบัติการยูนิกซ์type
cat
ตัวอย่างที่ 1:
type file1 file2 > file3
เทียบเท่ากับ:
cat file1 file2 > file3
ตัวอย่างที่ 2:
type *.vcf > all_in_one.vcf
คำสั่งนี้จะรวม vcards ทั้งหมดไว้ในที่เดียว
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
เป็นนามแฝงสำหรับการรับเนื้อหาดังนั้นถ้าคุณชอบดีกว่าคุณสามารถเขียน:
type file1,file2
type file1 file2 > dest
และแต่ละอันก็ทำได้ในไม่กี่วินาที
-Encoding UTF8
ไม่ได้เปลี่ยนแปลงอะไรเลย
เพียงใช้คำสั่ง dos copy ที่มีไฟล์ต้นฉบับหลายไฟล์และไฟล์ปลายทางหนึ่งไฟล์
copy file1+file2 appendedfile
คุณอาจต้องการตัวเลือก / B สำหรับไฟล์ไบนารี
ในรีลีส Redstone 1 ของ Windows 10 Windows ได้เพิ่มระบบย่อย Linux จริงสำหรับเคอร์เนล NTOS ฉันคิดว่าเดิมมีวัตถุประสงค์เพื่อสนับสนุนแอพ Android และอาจเป็นประเภทนักเทียบท่า Microsoft ร่วมมือกับ Canonical และเพิ่มเชลล์ bash จริง นอกจากนี้คุณยังสามารถใช้ apt package manager เพื่อรับแพ็คเกจ Ubuntu มากมาย ตัวอย่างเช่นคุณสามารถทำ apt-get gcc เพื่อติดตั้งโซ่เครื่องมือ GCC ได้ตามต้องการบนกล่อง Linux
หากสิ่งนั้นมีอยู่ในขณะที่ฉันอยู่ในมหาวิทยาลัยฉันคิดว่าฉันน่าจะได้ทำเรื่องการเขียนโปรแกรม Unix เกือบทั้งหมดใน bash shell ของ Windows
หากคุณต้องการเพิ่มข้อความต่อท้ายไฟล์ที่มีอยู่คุณสามารถใช้ไพพ์ >> อดีต:
echo new text >>existingFile.txt
หากคุณต้องใช้สคริปต์ชุดและติดตั้งหลามที่นี่เป็นคำตอบpolygotในชุดและหลาม:
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 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 build และมีการเน้นโค้ดที่ดีขึ้นและสิ่งที่สำคัญคือมันทำงานได้ดีบน Windows เพื่อเข้าร่วมคลังข้อมูล tar!
ดังนั้นฉันจึงกำลังมองหาวิธีแก้ปัญหาที่คล้ายกันกับความสามารถในการรักษา EOL chars และพบว่าไม่มีวิธีดังนั้นฉันทำสิ่งที่ฉันทำดีที่สุดและทำให้ประโยชน์ของฉันเองนี่คือแมวพื้นเมืองที่ปฏิบัติการได้สำหรับ 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 ไบต์ ลองแมวของ Cygwin