मैं एक निर्देशिका के भीतर कई पाठ फ़ाइलें, जिनमें से प्रत्येक मैं स्ट्रिंग की प्रत्येक पुनरावृत्ति को बदलना चाहते है 1 setlinewidth को 10 setlinewidth । मैं विंडोज cmd के माध्यम से यह कैसे करूँ? कृपया मदद कीजिए।
मैं एक निर्देशिका के भीतर कई पाठ फ़ाइलें, जिनमें से प्रत्येक मैं स्ट्रिंग की प्रत्येक पुनरावृत्ति को बदलना चाहते है 1 setlinewidth को 10 setlinewidth । मैं विंडोज cmd के माध्यम से यह कैसे करूँ? कृपया मदद कीजिए।
जवाबों:
यदि आप तृतीय-पक्ष उपयोगिताओं को स्थापित कर सकते हैं, तो इस प्रकार के ऑपरेशन के लिए ग्नू सेड दर्जी है। लिंक एक विंडोज संस्करण की ओर इशारा करता है जो सोर्सफोर्ग में होस्ट किया गया है जिसे आप डाउनलोड और इंस्टॉल कर सकते हैं। यह प्रॉम्प्ट प्रॉम्प्ट पर होगा:
for %i in (*.txt) do sed -i "s/1 setlinewidth/10 setlinewidth/g" %i
नोट:-i
विकल्प के साथ , sed विचाराधीन फाइलों को अधिलेखित करने जा रहा है, इसलिए सुनिश्चित करें कि आपने गलत होने पर बस बैकअप आसानी से उपलब्ध है।
यदि आप sed उपयोगिता को स्थापित नहीं कर सकते हैं, तो यह केवल बिल्ट-इन बैच भाषा का उपयोग करके अधिक कठिन होने वाला है।
संपादित करें: मैंने एक छोटे बैच फ़ाइल को एक साथ रखा है जो किसी बाहरी उपकरण के बिना प्रतिस्थापन का प्रदर्शन करेगा। इसे foo.cmd
या अपने पसंदीदा नाम के रूप में सहेजें और कमांड लाइन से इसे लागू करें:foo.cmd
एक चेतावनी: यह आपके प्रश्न में उदाहरणों से विशेष रूप से लिखा गया है। यदि पहले या बाद में लाइन के आरंभ या अंत में अन्य पाठ या अतिरिक्त स्थान हैं 1 setlinewidth
, तो यह बैच फ़ाइल काम नहीं करेगी। यह एक .bak एक्सटेंशन (जैसे textfile.txt.bak) के साथ मूल पाठ फ़ाइल की एक प्रति भी बचाएगा।
@echo off
setlocal ENABLEEXTENSIONS
setlocal ENABLEDELAYEDEXPANSION
for %%a in (*.txt) do (
echo Processing %%a...
for /f "delims=^ tokens=1" %%i in (%%a) do (
if /i "%%i"=="1 setlinewidth" (
echo 10 setlinewidth>>%%a.new
) else (
echo %%i>>%%a.new
)
)
move /y %%a %%a.bak > nul
ren %%a.new %%a
)
पॉवर्सशेल में उपयोगिताओं हैं जो किसी भी बाहरी सॉफ़्टवेयर या उपयोगिताओं को डाउनलोड किए बिना इस समस्या को हल करेंगे। की जाँच करें इस लेख स्क्रिप्टिंग लड़का द्वारा, यह बहुत अच्छा है। मैं यह भी कहूंगा कि सेट-सामग्री प्रलेखन पर एक नज़र डालें ।
उदाहरण:
(Get-Content C:\Scripts\Test.txt) |
Foreach-Object {$_ -replace "oldString", "newString"} |
Set-Content C:\Scripts\Test.txt