बैच फ़ाइल संशोधन के बाद काम नहीं कर रहा है


0

मेरे पास एक बैच फ़ाइल है जो अन्य क्लाइंट फ़ोल्डर में फ़ोल्डर बनाती है। मैंने एक अतिरिक्त फोल्डर जोड़ा है जिसे अब बैट फाइल काम नहीं करेगी। क्या मुझसे कोई चूक हो रही है?

@echo off

set Dir=y:\(Directory of companies)
set Year=(The year I want the folders added to)


setlocal enabledelayedexpansion

for /f "delims=" %%D in ('dir /ad/b !Dir!') do (
    if not exist "!Dir!\%%D\!Year!" (
    md "!Dir!\%%D\!Year!"
    md "!Dir!\%%D\!Year!\Tax"
    md "!Dir!\%%D\!Year!\Tax\Estimated_Tax"
    md "!Dir!\%%D\!Year!\Tax\Info_for_tax_return"  
    md "!Dir!\%%D\!Year!\Year_End_Planning"
    )
  )
)

Info_for_tax_returnमैंने जो नई लाइन जोड़ी है, उससे बैट फाइल काम करना बंद कर देती है। आपकी सहायता की सराहना। धन्यवाद


इसे जोड़ने के बाद, यह किस तरह से "काम करना बंद" करता है? कोई त्रुटि? क्या अन्य फ़ोल्डर (अभी भी) बनाए गए हैं? यदि आप लाइन को हटाते हैं तो यह फिर से अपेक्षित के रूप में काम करता है?
Ƭᴇc atιᴇ007

मैं एलीवेटेड विशेषाधिकारों के साथ cmd चलाता हूं, .bat फ़ाइल चलाता हूं और मुझे मिलता है, सिस्टम निर्दिष्ट पथ नहीं खोज सकता। यदि यह मदद करता है तो ये फ़ोल्डर्स Sharepoint 2007 में मैप किए गए ड्राइव पर किए जाते हैं। यदि मैं अभी लाइन हटाता हूं, तो मुझे वही त्रुटि संदेश मिलता है।
Bigwil

जवाबों:


0

आपके पास अपने forब्लॉक में खुलने से अधिक समापन कोष्ठक हैं :

for /f "delims=" %%D in ('dir /ad/b !Dir!') do ( **<-1**
    if not exist "!Dir!\%%D\!Year!" ( **<-2**
    md "!Dir!\%%D\!Year!"
    md "!Dir!\%%D\!Year!\Tax"
    md "!Dir!\%%D\!Year!\Tax\Estimated_Tax"
    md "!Dir!\%%D\!Year!\Tax\Info_for_tax_return"  
    md "!Dir!\%%D\!Year!\Year_End_Planning"
    ) **<-1**
  ) **<-2**
) **<-3**

अतिरिक्त समापन कोष्ठक निकालें और पुनः प्रयास करें:

for /f "delims=" %%D in ('dir /ad/b !Dir!') do (
    if not exist "!Dir!\%%D\!Year!" (
        md "!Dir!\%%D\!Year!"
        md "!Dir!\%%D\!Year!\Tax"
        md "!Dir!\%%D\!Year!\Tax\Estimated_Tax"
        md "!Dir!\%%D\!Year!\Tax\Info_for_tax_return"  
        md "!Dir!\%%D\!Year!\Year_End_Planning"
    )
)

0

ध्यान दें:

  • setlocal disabledelayedexpansion क्योंकि आपको विलंबित विस्तार सक्षम करने की आवश्यकता नहीं है
  • set "Year=2015" कोई अतिरिक्त अवांछित सफेद रिक्त स्थान सुनिश्चित करने के लिए दोहरे उद्धरणों में संलग्न
  • set "Dir=y:\Directory of companies" भी
  • md "%Dir%\%%D\%Year%" 2>nul2>nulयदि लक्ष्य निर्देशिका मौजूद है, तो त्रुटि संदेशों को दबाने के लिए (उन्हें नरक में पुनर्निर्देशित करें )। इसलिए आपको यह परीक्षण करने की आवश्यकता नहीं है कि यह मौजूद है या नहीं
  • आपके द्वारा if not exist "!Dir!\%%D\!Year!" (...)बनाई गई निर्देशिकाओं को बंद करने से एक पंक्ति जुड़ गई और एक से अधिक बार लॉन्च की गई ...

यह स्क्रिप्ट आपके लिए काम करनी चाहिए।

@echo off
setlocal disabledelayedexpansion

set "Dir=y:\Directory of companies"
set "Year=2015"
:: (The year I want the folders added to)

for /f "delims=" %%D in ('dir /ad/b %Dir%') do (
    md "%Dir%\%%D\%Year%" 2>nul
    md "%Dir%\%%D\%Year%\Tax" 2>nul
    md "%Dir%\%%D\%Year%\Tax\Estimated_Tax" 2>nul
    md "%Dir%\%%D\%Year%\Tax\Info_for_tax_return" 2>nul  
    md "%Dir%\%%D\%Year%\Year_End_Planning" 2>nul
)
endlocal
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.