2011-04-12 12 views
10

अभी मेरे पास बैच नौकरी है जो मैंने लिखा है कि एक और फ़ाइल कॉल करता है और उन चरों में गुजरता है जिन्हें निष्पादन योग्य चलाने की आवश्यकता होती है (पासवर्ड और फ़ाइल नाम)।बैच निर्देशिका में सभी फ़ाइलों को संसाधित करता है

पूर्व:

> cd f:\test\utils 
> admin import-xml -Dimport.file=f:\DB\file1.xml -Dadmin.db.password=test123 

मुझे लगता है कि यह करता है एक नौकरी लिखा था, लेकिन पता चला कि वहाँ एक से अधिक फ़ाइलों होगा।

उपयोगकर्ता नाम और पासवर्ड कभी नहीं बदलता है लेकिन फ़ाइल नाम 15 अलग-अलग एक्सएमएल फाइलों के लिए अलग है - शायद अधिक जल्द ही आ रहा है।

फ़ाइलें हमेशा एक ही फ़ोल्डर में स्थित रहेंगी। 15-20 नौकरियों (प्रत्येक फ़ाइल के लिए एक) के साथ समाप्त होने के बजाय, क्या मैं कुछ लिख सकता हूं जो इस निर्देशिका में स्थित प्रत्येक फ़ाइल को संसाधित करेगा। और या तो प्रतीक्षा करें जब तक कोई अगले से पहले पूरा नहीं हो जाता है या मैं अगली फ़ाइल शुरू करने से पहले 3 मिनट की नींद जोड़ सकता हूं।

उत्तर

30
pushd C:\test\utils 
for %%F in (F:\DB\*.xml) do (
    admin import-xml "-Dimport.file=%%~dpnxF" -Dadmin.db.password=test123 
) 
popd 

%%~dpnxF को Rive, पी एथलीट, आधार n एएमई और ई एक्स वर्तमान फ़ाइल के तनाव फैलता है।

आपको लगता है कि पाश में और उपयोग वातावरण चर (%foo%) स्थापित करने के लिए करना चाहते हैं, help set पढ़ पहले इससे पहले कि आप मुसीबत में पड़।

+0

बहुत बढ़िया। मुझे जो चाहिए वह हासिल करने के लिए इसका उपयोग करने में सक्षम। धन्यवाद। – Gabriel

+0

क्या आप व्याख्या कर सकते हैं कि 'for' loop के अंदर 'set' का उपयोग करने की परेशानी * से कैसे बचें? – Snekse

+0

स्नेक्से, जादू शब्द * देरी परिवर्तनीय विस्तार * है। यह कुछ है जो मुझे हर दूसरे बैच फ़ाइल उत्तर में समझाता है। यह 'सहायता सेट' में भी अच्छी तरह से समझाया गया है। – Joey

0
for file in f:\DB\* 
do 
    admin import-xml -Dimport.file="$file" -Dadmin.db.password=test123 
done 
+0

विंडोज बैच के लिए नहीं !!!! – kokbira

7

आप for कमांड का उपयोग कर सकते हैं। एक बैच फ़ाइल में कुछ इस तरह:

for %%f in (*.xml) do call myotherbatch.bat %%f 

मान लिया जाये कि admin आदेश आप चल रहे हैं वापस नहीं करता है कि जब तक काम समाप्त हो गया है, इसके बाद के संस्करण पाश उन्हें क्रमिक पर कार्रवाई होगी।

यदि आप प्रॉम्प्ट पर कमांड चलाते हैं (बैच फ़ाइल के विपरीत), केवल एक ही% का उपयोग करें।

संबंधित मुद्दे