سؤال

أحتاج إلى الانضمام إلى ملفين ثنائيين مع ملف *.bat البرنامج النصي على ويندوز.

كيف يمكنني تحقيق ذلك؟

هل كانت مفيدة؟

المحلول

شبابيك type يعمل الأمر بشكل مشابه لنظام UNIX cat.

مثال 1:

type file1 file2 > file3

يعادل:

cat file1 file2 > file3

مثال 2:

type  *.vcf > all_in_one.vcf  

سيقوم هذا الأمر بدمج جميع بطاقات vcards في بطاقة واحدة.

نصائح أخرى

يمكنك استخدام copy /b مثله:

copy /b file1+file2 destfile

إذا كان لديك القدرة على التحكم في الجهاز الذي تقوم فيه بعملك، فإنني أوصي بشدة بالتثبيت جنووين32.ما عليك سوى "تنزيل الكل" والسماح لبرنامج wget باسترداد جميع الحزم.سيكون لديك بعد ذلك إمكانية الوصول إلى cat، وgrep، وfind، وgzip، وtar، وأقل، ومئات من الآخرين.

يعد GnuWin32 أحد الأشياء الأولى التي أقوم بتثبيتها على جهاز Windows الجديد.

قابس PowerShell المخزي (لأنني أعتقد أن منحنى التعلم مؤلم، لذا فإن تعليم شيء ما في أي فرصة يمكن أن يساعد)

Get-Content file1,file2

لاحظ أن type هو اسم مستعار لـ Get-Content، لذا إذا أعجبك أكثر، يمكنك كتابة:

type file1,file2

ما عليك سوى استخدام أمر dos Copy مع ملفات مصدر متعددة وملف وجهة واحد.

نسخ الملف 1 + الملف 2 الملف الملحق

قد تحتاج إلى الخيار /B للملفات الثنائية

في إصدار Windows 10's Redstone 1، أضاف Windows نظام Linux فرعيًا حقيقيًا لنواة NTOS.أعتقد أنه كان في الأصل يهدف إلى دعم تطبيقات Android، وربما سيناريوهات نوع عامل الإرساء.دخلت Microsoft في شراكة مع Canonical وأضفت غلاف bash أصليًا فعليًا.يمكنك أيضًا استخدام apt package manager للحصول على العديد من حزم Ubuntu.على سبيل المثال، يمكنك القيام بـ apt-get gcc لتثبيت سلسلة أدوات مجلس التعاون الخليجي كما تفعل على نظام التشغيل Linux.

إذا كان مثل هذا الشيء موجودًا أثناء وجودي في الجامعة، فأعتقد أنه كان بإمكاني تنفيذ معظم مهام برمجة Unix الخاصة بي في Windows bash Shell الأصلي.

إذا كنت تريد ببساطة إلحاق نص بنهاية الملف الموجود، فيمكنك استخدام الأنبوب >>.السابق:

echo new text >>existingFile.txt

إذا كان عليك استخدام برنامج نصي دفعي وتثبيت 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 في ويندوز cmd.exe, ، سيؤدي ذلك إلى ضم الملف بترتيب خاطئ. (أي type في بعض الأحيان سيتم وضع XXXX.ad في البداية ثم XXXX.ac وXXXX.aa وما إلى ذلك ...)

لذلك وجدت أداة اسمها bat في جيثب https://github.com/sharkdp/bat الذي يحتوي على إصدار Windows، ويحتوي على تمييز أفضل للكود والشيء المهم هو أنه يعمل بشكل جيد على Windows لإعادة الانضمام إلى أرشيف tar!

لذلك كنت أبحث عن حل مماثل مع Abillity للحفاظ على eol chars واكتشفت أنه لا توجد طريقة ، لذلك أفعل ما أفعله بشكل أفضل وجعلت بلدي utillity هذا هو القط الأصلي قابلة للتنفيذ للنوافذ - 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

أنا أسميها Sharp-cat لأنها مبنية باستخدام C#، فلا تتردد في إجراء المسح باستخدام برنامج مكافحة الفيروسات وسيتم توفير كود المصدر عند الطلب

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top