2015-05-26 7 views
8

में संयोजित करें, मुझे एक स्क्रिप्ट बनाने की आवश्यकता है, जो एकाधिक टेक्स्ट फ़ाइलों को एक में जोड़ता है। मैं अपने सरल पताविंडोज बैच - एकाधिक टेक्स्ट फ़ाइलों को एक

type *.txt > merged.txt 

उपयोग करने के लिए लेकिन आवश्यकता "फ़ाइल day_YYYY-DD-MM.txt में उसी दिन से फाइल को श्रेणीबद्ध" है मैं कर रहा हूँ linux उपयोगकर्ता और खिड़कियों बैच मेरे लिए नरक है।

संपादित करें: इसका Windows XP

+0

अगर यह एक 'असली' बैच फ़ाइल में या यदि powershell/विंडोज स्क्रिप्टिंग मेजबान उपलब्ध है किया जाना चाहिए आप हमें बताना चाहिए। शुरुआत करने वालों के लिए आपको यह उल्लेख करना चाहिए कि कौन से विंडोज संस्करण को समर्थित होना चाहिए (न्यूनतम/अधिकतम) – Marged

+0

इसकी विंडोज एक्सपी इसलिए कोई शक्ति नहीं है – SpeedEX505

+0

आपको ऐसा करने के लिए एक सुंदर फॉर कमांड की आवश्यकता होगी: http://stackoverflow.com/questions/ 9234207/खोज-दर-तारीख-का उपयोग कर-कमांड लाइन। निजी तौर पर, मैं बैच में इस तरह की चीजों से गड़बड़ नहीं करता। यहां तक ​​कि यदि आप इसे काम करने के लिए प्राप्त कर सकते हैं, तो आप जिस प्रकार के ऑब्जेक्ट का उपयोग कर सकते हैं, सीमित हैं - पावरहेल जाने का रास्ता है। –

उत्तर

8

मूल बात, एक बैच फ़ाइल से फ़ाइलों को श्रृंखलाबद्ध 'प्रतिलिपि' के साथ किया जाता है।

copy file1.txt + file2.txt + file3.txt concattedfile.txt 
+1

मैंने प्रतिलिपि * .xyz all.bin की कोशिश की लेकिन परिणामस्वरूप फ़ाइल all.bin में केवल उस निर्देशिका में xyz फ़ाइलों का सबसेट था। मैं नहीं देख सकता कि इसमें उन सभी को शामिल क्यों नहीं किया गया। प्लस वाक्यविन्यास आवश्यक है? यदि ऐसा है तो बड़ी संख्या में फाइलों के लिए असुविधाजनक है। – DaveInCaz

+0

मैंने अभी आपके चश्मा प्रति उदाहरण बनाया है और यह अपेक्षित व्यवहार करता है। मैंने "1.xyz", "2.xyz", और "3.xyz" बनाया है। फिर "copy * .xyz all.bin" चलाया और परिणामस्वरूप "all.bin" में सभी 3 फ़ाइलों की सामग्री शामिल थी। इसलिए मुझे नहीं पता कि यह आपके लिए क्यों काम नहीं कर रहा है। – Lance

+0

इसका परीक्षण करने के लिए धन्यवाद। मुझे कारण खोजने और खोजने के लिए आगे प्रयोग करना होगा! – DaveInCaz

1

इस प्रयास करें:

@echo off 
set yyyy=%date:~6,4% 
set mm=%date:~3,2% 
set dd=%date:~0,2% 

set /p temp= "Enter the name of text file: " 
FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%temp%.txt 

इस कोड "day_" के बाद फाइल का नाम स्थापित करने के लिए आप से पूछना है जहाँ आप इनपुट तारीख कर सकते हैं। आप वास्तविक तिथि आप यह कर सकते हैं की तरह अपनी फ़ाइल के नाम करना चाहते हैं:

FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%yyyy%-%mm%-%dd%.txt 
+1

आपके उत्तर का परिणाम सिस्टम की स्थानीय सेटिंग पर निर्भर करता है। – Endoro

-1

हम फ़ाइलें विलय करने के लिए सामान्य कैट आदेश का उपयोग कर सकते हैं ..

डी:>बिल्ली * .csv> आउटपुट। सीएसवी

+0

विंडोज पर कोई सीएटी नहीं है। – Yarik

+0

गिट जैसे कुछ पैकेज बिल्ली के साथ आते हैं, शायद उन्होंने इसे डॉस कमांड के लिए गलत समझा। – DaveInCaz

5

सभी फ़ाइलों को एक अलग फ़ोल्डर में कॉपी करने की आवश्यकता है, आसानी से उन्हें सी ड्राइव में रखें।

ओपन कमांड प्रॉम्प्ट - विंडोज> प्रकार cmd> कमांड प्रॉम्प्ट का चयन करें।

आप डिफ़ॉल्ट निर्देशिका को इंगित कर सकते हैं - पूर्व: सी: [फ़ोल्डर_नाम]>। 'cd [Folder_Name]' कमांड का उपयोग करके, फ़ोल्डर को इंगित करने के लिए निर्देशिका को इंगित करने के लिए निर्देशिका को बदलें।

निर्देशिका को इंगित करने के बाद - 'dir' टाइप करें जो फ़ोल्डर में मौजूद सभी फाइलें दिखाता है, बस यह सुनिश्चित करने के लिए कि सबकुछ जगह पर है।

अब टाइप करें: 'copy * .txt [newfile_name] .txt' और एंटर दबाएं।

हो गया!

सभी अलग-अलग फ़ाइलों में पाठ [newfile_name] में कॉपी किया जायेगा .txt

+0

यह परिणामस्वरूप फ़ाइल के अंत में एक अतिरिक्त 0x1A वर्ण जोड़ना प्रतीत होता है, जो कि अगर मुझे रास्ते-पीछे-बुरे-पुराने दिनों से याद किया गया था, तो "नियंत्रण जेड" था, जो फ़ाइल चिह्न का अंत था। – ALEXintlsos

संबंधित मुद्दे