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


0

मैं 10,000 पाठ फ़ाइलों में से पहली 3 पंक्तियों को निकालने का प्रयास कर रहा हूँ। का उपयोग करते हुए:

for %f in (*.txt) do more +3 “%f” >> output.txt

मैं हेडर को हटाने और फ़ोल्डर में सभी फ़ाइलों को एक नई फ़ाइल में बदलने में सक्षम हूं। हालाँकि, मैं फ़ाइलों को अलग रखना चाहूंगा, बस हेडर लाइनों के बिना। क्या यह संभव है?

जवाबों:


2

आप स्रोत फ़ाइलों को अधिलेखित नहीं कर सकते। और आप ओवरलैपिंग के कारण नए नाम को ऑटोजेनरेट नहीं कर सकते। लेकिन आप फ़ाइल को बिना हेडर के अस्थायी फ़ोल्डर में सहेज सकते हैं और फिर उसे स्रोत पर स्थानांतरित कर सकते हैं। यह कुछ इस तरह होगा:

@echo off
for %%f in (*.txt) do (
    more +3 "%%f" > "%TEMP%\%%f"
    move /y "%TEMP%\%%f" "%%f" > nul
)
echo Done.

या कमांड लाइन में एक कमांड के समान:

@for %f in (*.txt) do @(more +3 "%f" > "%TEMP%\%f" && move /y "%TEMP%\%f" "%f" > nul)

2

यदि आपका वातावरण इसे संभव बनाता है, तो Powershell का उपयोग करने पर विचार करें ताकि आपको अस्थायी फ़ाइलों और फ़ोल्डरों का उपयोग करने की आवश्यकता न हो।

Foreach ($file in Get-ChildItem -Path ".\" -Filter *.txt ) {
    $content = Get-Content $file.FullName | Select-Object -Skip 3;
    Set-Content -Path $file.FullName -Value $content;
}

1

बस दूसरी डायरेक्टरी में अलग फाइल बनाएं।

md sub
for %f in (*.txt) do more +3 “%f” > sub\%f

सबफ़ोल्डर अनुमति की आवश्यकता बनाएँ ... subसबफ़ोल्डर मौजूद नहीं होना चाहिए ... और कुछ खाली स्थान की भी आवश्यकता है (लेकिन ऐसा लगता है कि यह मौजूद है क्योंकि यह output.txtफ़ाइल के लिए मौजूद है )।
अकिना
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.