सबडायरेक्टरीज़ में फ़ाइलों को कुशलतापूर्वक संसाधित करना बैच स्क्रिप्टिंग के साथ
विषयसूची
बैच स्क्रिप्टिंग मूल बातें समझना
बैच स्क्रिप्टिंग, अपनी उम्र के बावजूद, Windows कार्यों को स्वचालित करने के लिए एक मूल्यवान उपकरण बनी हुई है। बैच स्क्रिप्ट साधारण टेक्स्ट फ़ाइलें होती हैं जिनमें कमांड होते हैं जो cmd.exe
द्वारा क्रमिक रूप से निष्पादित किए जाते हैं, फ़ाइल हेरफेर और सिस्टम प्रशासन के लिए एक सीधा तरीका प्रदान करते हैं। इनका आमतौर पर .bat
या .cmd
एक्सटेंशन होता है।
महत्वपूर्ण तत्वों में शामिल हैं:
- चर:
set
कमांड (जैसे,set myVar=value
) का उपयोग करके डेटा (जैसे, फ़ाइल पथ) संग्रहीत करें। - कमांड:
dir
,copy
,del
,mkdir
औरif
जैसे निर्देश। - नियंत्रण संरचनाएँ:
if
,for
औरgoto
के साथ सशर्त निष्पादन और लूपिंग को सक्षम करें।
सबडायरेक्टरीज़ में फ़ाइलों को पुनरावर्ती रूप से संसाधित करना
पुनरावर्ती निर्देशिका ट्रैवर्सल के लिए for /r
लूप महत्वपूर्ण है। /r
स्विच लूप को सबडायरेक्टरीज़ को खोजने का निर्देश देता है। यह उदाहरण निर्दिष्ट निर्देशिका और उसके सबफ़ोल्डर के भीतर सभी .txt
फ़ाइलों को सूचीबद्ध करता है:
@echo off
setlocal
set "rootDir=C:MyDirectory" 'अपनी मूल निर्देशिका से बदलें
for /r "%rootDir%" %%a in (*.txt) do (
echo Processing file: %%a
)
endlocal
मुख्य तत्वों की व्याख्या:
@echo off
: कमांड प्रदर्शन को दबा देता है।setlocal
: स्क्रिप्ट चर को अलग करने के लिए एक स्थानीय वातावरण बनाता है।for /r "%rootDir%" %%a in (*.txt) do (...)
: पुनरावर्ती लूप।%%a
पूर्ण फ़ाइल पथ रखता है।endlocal
: स्थानीय वातावरण को समाप्त करता है।
कस्टम फ़ाइल संचालन जोड़ना
फ़ाइलों को सूचीबद्ध करने से परे, आप लूप के भीतर विभिन्न कमांड को एकीकृत कर सकते हैं। यह उदाहरण सभी .txt
फ़ाइलों को एक बैकअप निर्देशिका में कॉपी करता है:
@echo off
setlocal
set "rootDir=C:MyDirectory"
set "backupDir=C:Backup"
if not exist "%backupDir%" mkdir "%backupDir%"
for /r "%rootDir%" %%a in (*.txt) do (
copy "%%a" "%backupDir%" & if errorlevel 1 echo Error copying %%a
)
endlocal
मज़बूत त्रुटि हैंडलिंग तकनीकें
प्रभावी त्रुटि हैंडलिंग महत्वपूर्ण है। यह उन्नत स्क्रिप्ट जांचता है कि क्या बैकअप निर्देशिका मौजूद है और संभावित कॉपी त्रुटियों को संभालती है:
@echo off
setlocal
set "rootDir=C:MyDirectory"
set "backupDir=C:Backup"
if not exist "%backupDir%" (
mkdir "%backupDir%"
if errorlevel 1 (
echo Error creating backup directory! Exiting.
exit /b 1
)
)
for /r "%rootDir%" %%a in (*.txt) do (
copy "%%a" "%backupDir%"
if errorlevel 1 (
echo Error copying %%a. Continuing...
)
)
endlocal
उन्नत तकनीकें और अनुकूलन
अधिक जटिल परिदृश्यों या बड़ी निर्देशिकाओं के लिए, इन अनुकूलनों पर विचार करें:
forfiles
: उन्नत फ़िल्टरिंग प्रदान करता है (जैसे, तिथि, आकार द्वारा)।- PowerShell: व्यापक फ़ाइल प्रसंस्करण के लिए अधिक शक्तिशाली और कुशल उपकरण प्रदान करता है।
- समानांतर प्रसंस्करण: एक साथ कई फ़ाइलों को संसाधित करने के लिए तकनीकों का पता लगाएँ (अधिक उन्नत स्क्रिप्टिंग की आवश्यकता है)।
अक्सर पूछे जाने वाले प्रश्न
- प्रश्न: फ़ाइल पथों में रिक्त स्थानों को संभालना: हमेशा पथों को दोहरे उद्धरण चिह्नों (
"
) में संलग्न करें। - प्रश्न: एक तिथि के बाद संशोधित फ़ाइलों को संसाधित करना:
/d
स्विच के साथforfiles
का उपयोग करें। - प्रश्न: अन्य वाइल्डकार्ड का उपयोग करना: हाँ,
?
(एकल वर्ण) और*
(शून्य या अधिक वर्ण) का उपयोग करें। - प्रश्न: प्रदर्शन में सुधार: बहुत बड़ी निर्देशिकाओं के लिए, PowerShell काफी बेहतर प्रदर्शन प्रदान करता है।