शीर्षक या तिथि के साथ विंडोज पाठ फ़ाइलों को समाप्‍त करें?


1

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

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

क्या कोई विकल्प है जो उस फ़ाइल सामग्री के ऊपर या नीचे फ़ाइल का नाम भी लिखेगा, या फ़ाइल में लिखने का एक तरीका टाइमस्टैम्प होगा जब प्रविष्टि अंतिम बार संशोधित की गई थी?

जैसा कि मैंने उल्लेख किया है कि अंतिम उत्पाद एक एक्सेल स्प्रेडशीट है जो चार्ट प्राप्त कर रहा है, इसलिए यदि कई पाठ फ़ाइलों से इसे प्राप्त करने का एक बेहतर तरीका है, तो मुझे इसमें भी दिलचस्पी होगी।

संदर्भ जोड़ने के लिए, पाठ फ़ाइलों को स्वरूपित लॉग फ़ाइलों को प्रति घंटा उत्पादित किया जाता है और एक .txt एक्सटेंशन के साथ संख्यात्मक में दिनांक / समय की मुहर के साथ नाम दिया जाता है।

जवाबों:


0

क्या कोई विकल्प है जो फ़ाइल का नाम भी लिखेगा?

echoआउटपुट फ़ाइल में फ़ाइल नाम जोड़ने के लिए भी उपयोग करें ।

यहाँ एक उदाहरण बैच फ़ाइल है जिसे आप उपयुक्त रूप में संशोधित कर सकते हैं:

test.cmd:

@echo off
setlocal enabledelayedexpansion
for /f %%f in ('dir /b *.txt') do (
  echo filename: %%f >> output.txt 
  type "%%f" >> output.txt
  )
endlocal

टिप्पणियाँ:

  • से आउटपुट dirका उपयोग किया जाता है अन्यथा .txtफाइलों को कई बार संसाधित किया जाता है।

उदाहरण उपयोग और आउटपुट:

F:\test\test>dir
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test\test

12/08/2016  14:04    <DIR>          .
12/08/2016  14:04    <DIR>          ..
11/08/2016  21:07                 8 a.txt
11/08/2016  21:07                 8 b.txt
11/08/2016  21:08                 8 c.txt
               3 File(s)             24 bytes
               2 Dir(s)  1,769,524,736,000 bytes free

F:\test\test>type *.txt

a.txt


test1

b.txt


test2

c.txt


test3

F:\test\test>..\test

F:\test\test>type output.txt
filename: a.txt
test1
filename: b.txt
test2
filename: c.txt
test3

आगे की पढाई


0

आप ()इस तरह से एक फ़ाइल के लिए उन के उत्पादन को पुनर्निर्देशित करने के लिए, कई आदेशों को एक ब्लॉक में संयोजित करने के लिए उपयोग कर सकते हैं :

@echo off
setlocal EnableDelayedExpansion

if exist output.txt del output.txt
for /f "delims=" %%f in ('dir /b /od *.txt') do (
   echo %%~nf && type "%%f"
) >> output.txt

endlocal

मैं &&आज्ञाओं का उपयोग करने के लिए उपयोग करता हूं , ब्रैकेट पुनर्निर्देशन के कारण वैसे भी आवश्यक हैं।
बैच कई बिंदुओं को संबोधित करता है, जो @ DavidPostill के बैच ने हैंडल नहीं किया:
1- "आउटपुट। टेक्स्ट" फ़ाइल को अस्तित्व में होने पर खुद को जोड़ा जाएगा। आप या तो लूप का उपयोग करके इसे बाहर कर सकते हैं या IF %%f NEQ output.txt (...)शुरुआत में इसे हटा सकते हैं।
2- फाइलों को डेट के आधार पर सॉर्ट किया जाता है, dir /odजो प्रक्रिया को फाइलनाम के प्रारूप से स्वतंत्र बनाता है - जो वर्णानुक्रम में क्रमबद्ध होने पर कालानुक्रमिक रूप से क्रमित या नहीं हो सकता है।
3- फ़ाइल नाम टाइमस्टैम्प को CSV फ़ील्ड के रूप में उपयोग करने के लिए, CSV फ़ाइल में लिखने से पहले इसे हटा दिया जाता है।

यदि आपको फ़ाइल नाम 2 CSV फ़ील्ड (दिनांक और समय) में पार्स करने की आवश्यकता है, तो आपको कॉमा के साथ एक स्थान बदलना होगा (जैसे)

set x=%%~nf && set x=%x: =,% && echo %x% && type "%%f"

इसी तरह अगर तारीख और समय को परिसीमाक के बजाय स्थिति से अलग किया जाता।


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