Windows Automation

बैच स्क्रिप्टिंग के साथ उपडायरेक्टरीज़ में फ़ाइलों का कुशलतापूर्वक प्रसंस्करण

Spread the love

सबडायरेक्टरीज़ में फ़ाइलों को कुशलतापूर्वक संसाधित करना बैच स्क्रिप्टिंग के साथ

बैच स्क्रिप्टिंग मूल बातें समझना

बैच स्क्रिप्टिंग, अपनी उम्र के बावजूद, 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 काफी बेहतर प्रदर्शन प्रदान करता है।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *