batch-file
बैच फ़ाइलों में लूप्स के लिए
खोज…
वाक्य - विन्यास
- in / l %% p in (startNumber, increment, endNumber) कमांड करें
- for / f %% p इन (फाइलनाम) कमांड करें
- for / f %% p in ("textStrings") कमांड करते हैं
- for / f %% p in ('कमांड') कमांड करें
- / r ड्राइव के लिए: \ path %% p इन (सेट) कमांड करें
- / d %% p के लिए (डायरेक्टरी) कमांड करते हैं
टिप्पणियों
जब /f
ध्वज का उपयोग किया जाता है, तो आदेश के for
विकल्प स्वीकार करता है। यहां उन विकल्पों की सूची दी गई है जिनका उपयोग किया जा सकता है:
delims=x
Delimiter वर्ण (ओं) को टोकन को अलग करने के लिएफ़ाइल और टेक्स्ट स्ट्रिंग्स की शुरुआत में स्किप करने के
skip=n
लाइनों की संख्याeol=;
एक टिप्पणी को इंगित करने के लिए प्रत्येक पंक्ति की शुरुआत में चरित्रप्रत्येक पंक्ति या स्ट्रिंग से पढ़ने के लिए
tokens=n
क्रमांकित आइटमusebackq
एक और के हवाले से शैली का उपयोग करें:"फ़ाइलों" में लंबे फ़ाइल नामों के लिए दोहरे उद्धरण चिह्नों का उपयोग करें
'TextStrings' के लिए एकल उद्धरणों का उपयोग करें
`आदेश` के लिए वापस उद्धरण का उपयोग करें
एक फाइल सेट में प्रत्येक पंक्ति के माध्यम से लूपिंग
निम्नलिखित फ़ाइल C:\scripts\testFile.txt
में प्रत्येक पंक्ति को प्रतिध्वनित करेगा। रिक्त लाइनों को संसाधित नहीं किया जाएगा।
for /F "tokens=*" %%A in (C:\scripts\testFile.txt) do (
echo %%A
rem do other stuff here
)
अधिक उन्नत उदाहरण दिखाता है, एक प्रतिबंधित फ़ाइलों से डेटा के लिए लूप में व्युत्पन्न कैसे सेट डेटा का उपयोग बैच निष्पादन को पुनर्निर्देशित करने के लिए किया जा सकता है, जबकि किसी फ़ाइल में खोज की गई सामग्री को सहेजना:
@echo off
setlocal enabledelayedexpansion
for /f %%i in ('dir "%temp%\test*.log" /o:-d /t:w /b') do (
set "last=%temp%\%%i"
type !last! | find /n /i "Completed" >nul 2>&1 >> %temp%\Completed.log ^
&& (echo Found in log %%i & goto :end) || (echo Not found in log %%i & set "result=1"))
:: add user tasks code here
if defined result echo Performing user tasks...
:end
echo All tasks completed
exit /b
ध्यान दें, कितने समय के कमांड स्ट्रिंग्स को कई कोड लाइनों में विभाजित किया जाता है, और कमांड समूहों को कोष्ठकों द्वारा अलग किया जाता है।
निर्देशिका ट्री में पुनरावर्ती निर्देशिकाओं पर जाएँ
for /r
कमांड के लिए एक डायरेक्टरी ट्री में सभी डाइरेक्टरीज़ को रीसर्च करने के लिए और एक कमांड निष्पादित करने के लिए इस्तेमाल किया जा सकता है।
@echo off
rem start at the top of the tree to visit and loop though each directory
for /r %%a in (.) do (
rem enter the directory
pushd %%a
echo In directory:
cd
rem leave the directory
popd
)
टिप्पणियाँ:
- के लिए / r - फ़ाइलों के माध्यम से लूप (पुन: प्रस्तुत सबफ़ोल्डर्स)।
- pushd - वर्तमान निर्देशिका / फ़ोल्डर बदलें और POPD कमांड द्वारा उपयोग के लिए पिछले फ़ोल्डर / पथ को संग्रहीत करें।
- popd - PUSHD कमांड द्वारा हाल ही में संग्रहीत पथ / फ़ोल्डर में निर्देशिका बदलें।
वर्तमान निर्देशिका में सभी फ़ाइलों का नाम बदल रहा है
निम्न फ़ाइलों के समूह का नाम बदलने के for
लूप के साथ एक चर का उपयोग करता है।
SetLocal EnableDelayedExpansion
for %%j in (*.*) do (
set filename=%%~nj
set filename=!filename:old=new!
set filename=Prefix !filename!
set filename=!filename! Suffix
ren "%%j" "!filename!%%~xj"
)
चर नाम %%j
को परिभाषित करके और इसे सभी वर्तमान फ़ाइलों (*.*)
साथ जोड़कर, हम वर्तमान निर्देशिका में प्रत्येक फ़ाइल का प्रतिनिधित्व करने के for
एक लूप के लिए चर का उपयोग कर सकते हैं।
लूप के माध्यम से हर पुनरावृत्ति (या पास) परिभाषित समूह से एक अलग फ़ाइल को संसाधित करता है (जो समान रूप से किसी भी समूह, जैसे *.jpg
या *.txt
) हो सकता है।
पहले उदाहरण में, हम पाठ को प्रतिस्थापित करते हैं: पाठ स्ट्रिंग "पुराना" को पाठ स्ट्रिंग "नया" (यदि, लेकिन केवल अगर, पाठ "पुराना" फ़ाइल के नाम में मौजूद है) द्वारा प्रतिस्थापित किया जाता है।
दूसरे उदाहरण में, हम पाठ जोड़ते हैं: पाठ "उपसर्ग" फ़ाइल नाम की शुरुआत में जोड़ा जाता है। यह एक प्रतिस्थापन नहीं है। यह परिवर्तन समूह की सभी फाइलों पर लागू होगा।
तीसरे उदाहरण में, फिर से हम पाठ जोड़ते हैं: पाठ "प्रत्यय" फ़ाइल नाम के अंत में जोड़ा जाता है। फिर, यह एक प्रतिस्थापन नहीं है। यह परिवर्तन समूह की सभी फाइलों पर लागू होगा।
अंतिम पंक्ति वास्तव में नाम बदलने का काम संभालती है।
यात्रा
for /L %%A in (1,2,40) do echo %%A
यह रेखा 1 से 39 तक बढ़ेगी, हर बार 2 से बढ़ेगी।
पहला पैरामीटर, 1
, शुरुआती संख्या है।
दूसरा पैरामीटर, 2
, वेतन वृद्धि है।
तीसरा पैरामीटर, 40
, अधिकतम है।