जब आप 'कॉपी / बी' कमांड का उपयोग करते हैं तो वास्तव में क्या होता है?


13

आज, मुझे पता चला कि मैं copy /bकमांड का उपयोग करके कुछ फ़ाइलों को मर्ज कर सकता हूं । विशेष रूप से, मैंने देखा कि जब मैंने दो एमपी 3 फ़ाइलों को मर्ज किया, तो वीएलसी खिलाड़ी ने समय के साथ मजाकिया व्यवहार प्रदर्शित किया:

             1 ले लो

यहां, यह काफी सामान्य है लेकिन पहले संगीत का अंत हो रहा था ... फिर मजाकिया भाग का अनुसरण किया गया ...।

            2 ले लो              3 ले लो

यहाँ, समय की तलाश सचमुच चल रही थी क्योंकि यह खेल रहा था।

इस तकनीक के साथ चित्रों या पीडीएफ के संयोजन पर, मुझे पता चला कि फ़ाइल आकार में एक सही वृद्धि होगी लेकिन केवल पहली तस्वीर प्रदर्शित की जाएगी।

तो मेरा सवाल यह है कि वास्तव में copy /bकमांड क्या करता है? क्या यह वास्तव में फ़ाइलों को मर्ज करने के लिए उपयोग करने के लिए है या यह एक हैक है?

जवाबों:


17

कमांड का /bझंडा copyफाइलों को बाइनरी (यानी, अर्थहीन बाइट्स की एक कच्ची धारा) के रूप में मानता है, और उन्हें डिफ़ॉल्ट (या /a) व्यवहार के बजाय बाइट के लिए बाइट की प्रतिलिपि बनाता है जो उन्हें पाठ की पंक्तियों के रूप में मानता है (अंत-पंक्ति के साथ) अक्षर, अंतिम-फ़ाइलें, आदि)

आप पाठ फ़ाइलों को डिफ़ॉल्ट पाठ व्यवहार या बाइनरी स्विच के साथ मर्ज कर सकते हैं, लेकिन बहुत अधिक किसी भी बाइनरी फ़ाइल काम नहीं करेगी। आप बस दो बाइनरी फ़ाइलों से बाइट्स कॉपी नहीं कर सकते हैं और उनसे काम करने की उम्मीद कर सकते हैं क्योंकि बाइनरी फ़ाइलों में आमतौर पर हेडर , मेटाडेटा , डेटा संरचनाएं होती हैं, आदि जो फ़ाइल के प्रारूप को परिभाषित करते हैं। यदि आप एक बाइनरी कॉपी करते हैं, तो आप बस सभी बाइट्स की नकल करेंगे, जो इन संरचनाओं को उन जगहों पर डाल रहा है, जो उन्हें नहीं होना चाहिए, इसलिए जब आप उन्हें खोलते हैं, तो पार्सिंग फ़ंक्शन में परेशानी होगी और देखें कि क्या अनिवार्य रूप से भ्रष्ट डेटा है । कुछ प्रोग्राम उन भागों को अनदेखा कर देंगे जो समझ में नहीं आते हैं और बस दिखाते हैं कि वे क्या कर सकते हैं (जो काम करने के लिए स्टीरियोग्राफी की अनुमति देता है), लेकिन कुछ एक त्रुटि को फेंक देंगे और शिकायत करेंगे कि फ़ाइल भ्रष्ट है। भ्रष्टाचार का पता लगाने की क्षमता फ़ाइल-प्रकार पर निर्भर करती है।

एक उदाहरण के रूप में, आइए एक सरलीकृत पीडीएफ प्रारूप का आविष्कार करें:

Byte(s)    Meaning
---------------------

File header:
0-1        # of Pages
2-3        Language
4-5        Font
6-EOF      Data (each page encoded separately)

Page data:
0-1        Page number
2-3        # of characters on page
4-#chars   Letters contained on the page

जैसा कि आप देख सकते हैं, प्रत्येक फ़ाइल में कुछ सामान्य जानकारी के साथ एक फ़ाइल-स्तरीय शीर्षलेख होगा, जिसके बाद पृष्ठ डेटा वाले प्रत्येक पृष्ठ के लिए डेटा ब्लॉक होगा। यदि आप दो फ़ाइलें लेते हैं, तो प्रत्येक में एक पृष्ठ होता है और उन्हें बाइनरी फ़ाइलों के रूप में मर्ज किया जाता है, तो आप एक दो पृष्ठ की फ़ाइल नहीं बना रहे होंगे, बल्कि एक भ्रष्ट फ़ाइल जो एक पृष्ठ से शुरू होती है, तो उसमें रद्दी का एक गुच्छा होता है (फ़ाइल हेडर का कोई मतलब नहीं है जब प्रोग्राम पेज दो को पढ़ने की कोशिश करता है)।

यही बात आपके MP3 के लिए भी होती है। जब आप उन्हें इस तरह से जोड़ते हैं, तो दूसरी फ़ाइल के प्रारंभ और / या अंत में ID3 टैग बनाए रहते हैं, और जब खिलाड़ी अगले फ्रेम को पढ़ने की कोशिश करता है, तो यह ऑडियो डेटा की उम्मीद कर रहा है, लेकिन हैडर का पता लगा रहा है दूसरी फ़ाइल जो ऑडियो डेटा के लिए अपेक्षित प्रारूप से मेल नहीं खाती है, इसलिए यह नहीं पता है कि क्या करना है। कुछ खिलाड़ी हेडर को ऑडियो डेटा के रूप में चलाएंगे (जो निश्चित रूप से स्थिर / शोर / पॉप / आदि के रूप में चलेगा।), कुछ अगले सही फ्रेम तक ध्वनि में कटौती करेंगे, कुछ पूरी तरह से गाना बजाना बंद कर सकते हैं, और कुछ दुर्घटना भी कर सकते हैं। ।

copyआदेश सादे-पाठ (और फिर भी, केवल ASCII पाठ) के अलावा अन्य फ़ाइल प्रकार, इसलिए केवल सादे-पाठ सही ढंग से इसके साथ जोड़ा जा सकता है के बारे में कुछ भी नहीं जानता है। बाइनरी फ़ाइलों को एक संपादक का उपयोग करके जोड़ा जाना चाहिए जो जानता है कि सामग्री को कैसे पार्स और व्याख्या करना है।


अच्छा, VLC दोनों एमपी 3 फ़ाइलें खेलता है और यहां तक ​​कि सही ढंग से भी चाहता है, केवल समस्या यह है कि आप केवल समय भिन्नता नहीं देखना चाहते हैं ...
चिबुएज Opata

खैर जैसा मैंने कहा, कुछ प्रोग्राम भ्रष्ट-सहिष्णु हैं। वीएलसी की पार्सिंग एल्गोरिथ्म "भ्रष्ट" फ़्रेम को छोड़ सकता है, लेकिन क्योंकि वे वास्तविक फ्रेम नहीं हैं, इसलिए इसकी सही लंबाई जानने का कोई तरीका नहीं है, इसलिए यह चारों ओर कूदता है। यह ऐसा है जैसे अगर आप ऊपर बताई गई दो-पेज की पीडीएफ फाइल को लोड करते हैं; पाठक को नहीं पता होगा कि वास्तव में कितने पृष्ठ हैं। MP3s के साथ आपकी सबसे अच्छी शर्त यह है कि टैग्स को स्ट्रिप करें ताकि बाइनरी कॉपी करने से पहले केवल ऑडियो फ्रेम का एक गुच्छा हो।
Synetech

1

आपके उदाहरण में, MP3s के साथ, यह शायद अजीब व्यवहार देगा क्योंकि MP3s कैसे एन्कोड हो जाते हैं। उदाहरण के लिए, ID3v1 टैग एमपी 3 (यानी कलाकार, एल्बम, आदि) के अंतिम 128 बाइट्स हैं। यह जानकारी "खेलने योग्य" नहीं है। जब VLC या कोई अन्य मीडिया प्लेयर MP3 खोलता है, तो यह (संभवतः) पहले MP3 के माध्यम से चलेगा, सूचना के लिए मज़ेदार कार्य करेगा, और फिर संभवतः शेष फ़ाइल के माध्यम से खेल सकता है। मेरे पास अभी विंडोज लोड नहीं है, इसलिए मैं निश्चित रूप से परीक्षण नहीं कर सकता।

मुझे लगता है कि यह छवियों और फिल्मों के समान है; फ़ाइलों को एन्कोडेड करने के आधार पर निर्भर करता है कि फाइलें "गठबंधन" कैसे करेंगी। मुझे लगता है कि यह कार्यक्षमता DOS के दिनों से थी जब सब कुछ सादे पाठ में था


1

अच्छे पुराने Win ME दिनों में कुछ समय पहले मैं वीडियो क्लिप को केवल संक्षिप्त करने के लिए उपयोग करता हूं। यह हर समय काम नहीं करता था लेकिन इसने कुछ समय काम किया।

यह मेरे द्वारा उपयोग की गई कमांड का एक उदाहरण है:

copy /b movie1.mpg + movie2.mpg + movie3.mpg movie4.mpg

यदि फिल्में जहां बहुत बड़ी नहीं हैं और सभी समान प्रकार, फ्रेम दर आदि, वे आमतौर पर निर्दोष रूप से विलय कर देते हैं। हाल ही में ऐसा कुछ भी करने की कोशिश नहीं की गई है।


-1

एमपी 3 के बारे में, मोटे तौर पर, हैडर के बाद सभी को डेटा के रूप में पढ़ा जा सकता है। इस गेम में सेगा जेनेसिस में सोनिक 3 और सोनिक एंड नक्सल्स नामक एक अन्य गेम है। सोनिक एंड नक्सल्स के मूल कारतूस में अन्य खेलों को सम्मिलित करने के लिए एक स्लॉट था, लेकिन जब सोनिक 2 और विशेष रूप से 3 को जोड़ा जाता है, तो शायद चेकसम पॉइंटर्स के दूसरे सेट को ट्रिगर करेगा, खेल अलग तरह से व्यवहार करेगा। रोम का उपयोग करने के शुरुआती चरण में, जब भी हम काम करने के लिए दो कारतूस रखना चाहते थे जैसे कि यह हार्डवेयर में था, हमने उपयोग किया copy /b sonick.bin+sonic3.bin sonic3k.bin। इस तरह, उनके विलय से एक बड़ी एकल रोम का परिणाम होगा जहां sonick के पास निर्देश सेट (संकेत) होंगे ताकि वह s33 संसाधनों का उपयोग कर सके।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.