एक कमांड लाइन या बैच cmd कई फ़ाइलों को समेटने के लिए


99

मेरे पास एक निर्देशिका में 50 पाठ फाइलें हैं।

क्या उन फाइलों को एक ही फाइल में सम्‍मिलित करने के लिए एक विंडोज कमांड-लाइन विधि है?

मैं विस्टा का उपयोग कर रहा हूँ ।

मैं सभी फाइलों का नाम नहीं लिखना चाहता।


आप किस संस्करण का उपयोग कर रहे हैं? :) c'mon, हमें कुछ और जानकारी दें, किस प्रकार की फ़ाइल ... आप स्पष्ट रूप से उन फ़ाइलों को मर्ज करने का एक तरीका ढूंढ रहे हैं।

पोस्ट संपादित है
मिराज

2
विंडोज़ एनटी-आधारित ओएस (एनटी, 2000 और एक्सपी के बाद से सब कुछ) में डॉस वास्तव में डॉस नहीं है, यह "cmd.exe" नामक एक कमांड शेल है। इसे दर्शाने के लिए DOS टैग हटा दिए गए।
क्विकोट

इसके लिए खेद है, मैं वास्तव में यह नहीं जानता था। मैं DOS के रूप में सोच रहा था
मिराज

1
शुक्र है, डॉस के अंतिम वेस्टेज की मृत्यु विंडोज एमई के साथ हुई। :) लेकिन कोई चिंता नहीं है - ज्यादातर सभी अभी भी विंडोज कमांड-लाइन को "डॉस" कहते हैं, इसलिए यह गलत नहीं है , बस गलत है । चूँकि असली DOS का उपयोग अभी भी कभी-कभी किया जाता है, इसलिए मैं DOS टैग को केवल वास्तविक DOS प्रश्नों की सफाई देता हूँ।
२२'१०

जवाबों:


128

मैं सभी फाइलों का नाम नहीं लिखना चाहता।

इससे बचना आसान है। इस फ़ोल्डर में कमांड प्रॉम्प्ट खोलें और निम्न कमांड टाइप करें:

copy /b *.txt newfile.txt

प्रेस करें Enter

अब आपके पास इस फ़ोल्डर में सभी टेक्स्ट फाइलें होंगी, जिन्हें ऑर्डर करके एक फाइल में नया फाइल मर्ज किया जाएगा जिसे newfile.txt कहा जाता है।

मेरा अंतिम उद्देश्य प्रत्येक टेक्स्ट फ़ाइल की सामग्री को एक्सेल शीट के एक अलग कॉलम में संग्रहित करना है।

यहाँ एक ट्यूटोरियल है जो आपको अपने "अंतिम उद्देश्य" को प्राप्त करने में मदद कर सकता है:

एक कार्यपत्रक में सभी CSV या TXT फ़ाइलों को एक फ़ोल्डर में मर्ज करें


क्या हर लाइन के बाद नई लाइन कैरेक्टर डालना संभव है
मिराज

इस विधि से नहीं।
२३'१० को

अन्य विकल्प क्या है। मेरा अंतिम उद्देश्य प्रत्येक पाठ फ़ाइल की सामग्री को एक्सेल शीट के अलग कॉलम में संग्रहित करना है। एनी विचार
मिराज

@ मिराज - आपकी टिप्पणी के अनुसार मेरे उत्तर को अपडेट कर दिया।

लेकिन समस्या यह है कि मैं प्रत्येक टेक्स्ट फ़ाइल में एंडलाइन वर्ण कैसे जोड़ सकता हूं। वर्तमान में मर्ज किए गए फ़ाइल में कुछ पाठ टेक्स्ट एक ही पैराग्राफ में हैं, इसलिए एक्सेल ने इसे एक कॉलम में रखा। या अगर मैं पहले सभी फाइलों में कुछ एंडलाइन चरित्र जोड़ सकता हूं और फिर मर्ज ऑपरेशन कर सकता हूं
मिराज

38

प्रत्येक संक्षिप्त फ़ाइल के अंत में एक नया लिंक जोड़ने typeके लिए copy, निम्नानुसार उपयोग करें :

type *.txt > newfile.txt

5
चेतावनी: जब आप टाइप करते हैं * .txt> newfile.txt , तो टेक्स्ट डुप्लिकेट हो जाता है।
मालगनीस

2
और बाम .txtसे हटाओ newfile! ये लो।
पिता वाइल्डचाइल्ड

लॉग फ़ाइलों या अन्य चीजों को संक्षिप्त करने के लिए यह एक शानदार उत्तर है, जिसे आप सड़क के नीचे पार्स करेंगे। विशेष रूप से तथ्य यह है कि आप type x.log.* > merged.logएक बैच फ़ाइल के बिना कर सकते हैं । नई लाइनों से निपटना बहुत आसान है।
डैनियल चैपमैन

1
वाह, typeडॉस 3.3 के बाद से एक लंबा सफर तय किया है। मुझे नहीं पता था कि आप फ़ाइल मास्क का उपयोग कर सकते हैं। वह कब हुआ?
सूर्य

32

मान लें कि आप पाठ फ़ाइलों को लागू करने के बारे में बात कर रहे हैं, copyकमांड का उपयोग उन्हें एक साथ जोड़ने के लिए किया जा सकता है:

copy file1+file2+file3 targetfile

यदि आपके पास कई फाइलें हैं, तो आप एक बार में एक फाइल को जोड़कर लूप कर सकते हैं।

बाइनरी फ़ाइलों के लिए, ' /b' विकल्प में जोड़ें :

copy /b file1+file2+file3 targetfile

यह मानता है कि आप जिन बाइनरी फाइलों के साथ काम कर रहे हैं, उन्हें बैक-टू-बैक जोड़ा जा सकता है; यदि नहीं, तो आपको बेकार डेटा की एक गांठ मिलेगी।


5
यदि आप किसी विशेष क्रम में फ़ाइलों को संक्षिप्त करना चाहते हैं तो यह काफी उपयोगी है।
kapex


8

कमांड प्रॉम्प्ट में निम्न कमांड चलाएँ:

for %f in (*.txt) do type "%f" >> output.txt

1
यह अपेक्षा के अनुरूप काम नहीं करता है, सभी पाठों में नकल की गई हैoutput.txt
डेविडपोस्टिल

3
सुझाव * .txt output.txt से मेल खाता है
DavidPostill

@ डेविडप्रोस्टिल, मैंने आपकी चिंता के अनुसार उत्तर संपादित किया है।
सारण

3

निम्न .bat फ़ाइल XIT.for नाम की एक खाली फ़ाइल को छोड़कर सभी * .for फ़ाइलों को जोड़ेगी।

type NUL > MASTER.for
FOR %%G IN (*.for) DO IF NOT "%%G" == "XIT.for" copy /A MASTER.for+"%%G" && echo. >> MASTER.for

:)


2
उपरोक्त पर एक मामूली मोड़: यदि कोई यह सुनिश्चित करना चाहता है कि फाइलें वर्णानुक्रम में संक्षिप्त हैं , तो एक का उपयोग करना चाहिए: FOR / F %% G IN ('dir / b / o * .for') DO IF "%% G" नहीं। == "XIT.for" प्रति / A MASTER.for + "%% G" && प्रतिध्वनि। >> MASTER.for
गुइडो

मुझे यह पसंद हे। आज मुझे एक और ट्वीक की आवश्यकता है कि फ़ाइल नाम को इनपुट फाइल को अलग करने के लिए फाइल में प्रिंट किया जाए। for %f in (*.txt) do ((echo. & echo == %f == & echo. & type %f ) >> *.txt.dat )
कर्टिस मूल्य

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