एक .bat फ़ाइल [बंद] का उपयोग करके एक फ़ोल्डर मौजूद है या नहीं, यह जांचना


160

मैं यह जांचने में सक्षम होना चाहूंगा कि क्या एक निश्चित फ़ोल्डर (फोल्डर) मौजूद है और यदि ऐसा है, तो एक संदेश प्रदर्शित होने के लिए और फिर बैच फ़ाइल बाहर निकलने के लिए।

यदि FolderA मौजूद नहीं है, तो मैं तब जांचना चाहूंगा कि क्या कोई अन्य फ़ोल्डर (FolderB) मौजूद है। यदि FolderB मौजूद नहीं है, तो एक संदेश प्रदर्शित किया जाना चाहिए और फ़ोल्डर बनाया जाना चाहिए, और यदि FolderB मौजूद है, तो ऐसा कहते हुए एक संदेश प्रदर्शित किया जाना चाहिए।

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

यह सब एक .batफ़ाइल में किया जाना चाहिए ।


7
यदि ड्राइव या निर्देशिका अस्तित्व में है तो एक Google खोज परीक्षण के साथ आता है । और यह ठीक उसी तरह से बताता है कि आप कैसे पूछ रहे हैं ...
नीलबेल

2
"बैच-फ़ाइल निर्देशिका मौजूद है" के लिए एक खोज है तो SO पर Windows बैच फ़ाइल निर्देशिका के लिए खोज करें यदि मौजूद नहीं है तो फ़ाइल ले जाएँ , जिससे आपको पता चलता है कि कैसे निर्देशिका मौजूद है या नहीं। बैच फ़ाइल से डायरेक्टरी बनाने के बारे में भी यहाँ पोस्ट हैं। नए प्रश्न पोस्ट करने से पहले कृपया कुछ बुनियादी शोध करें; संभावना अच्छी है कि प्रश्न पहले यहां पूछा गया है। धन्यवाद।
केन व्हाइट

3
विंडोज बैच एक प्रोग्रामिंग भाषा है, जांचें कि क्या फाइल मौजूद है एक प्रोग्रामिंग कार्य। विषय पर दिखाई देता है।
ऑड्रीस मेसकॉस्कस

1
यदि किसी फ़ाइल को एक बैच स्क्रिप्ट में निर्देशिका है तो परीक्षण को कैसे रोकें के रूप में बंद किया जाना चाहिए ? "ऑफ-टॉपिक" के बजाय
माइकल फ्रीजिम

जवाबों:


259

इसका उपयोग करके देखें:

IF EXIST yourfilename (
echo Yes 
) ELSE (
echo No
)

बदलें yourfilename अपनी फ़ाइल के नाम के साथ।

एक निर्देशिका के लिए इस https://jeffpar.github.io/kbarchive/kb/065/Q65994/ पर देखें

C:
IF NOT EXIST C:\WIN\ GOTO NOWINDIR
CD \WIN
:NOWINDIR

ट्रेलिंग बैकस्लैश ('\') निर्देशिका और साधारण फाइलों के बीच अंतर करने के लिए पर्याप्त लगता है।


2
आपके उत्तर का दूसरा भाग अधूरा है।
tmj

4
if exist "c:\folder\nul" echo okविंडोज 7 के तहत मेरे लिए काम नहीं किया। क्या काम किया था if exist "c:\folder\" echo ok
अलेक्जेंडर गेल्बुख

2
@AlexanderGelbukh - आप सही हैं, if exist "networkPath\nul"झूठा विंडोज नेटवर्क ड्राइव पर एक फ़ोल्डर के रूप में एक फ़ाइल की रिपोर्ट कर सकते हैं। दुर्भाग्य से, एक if exist "networkPath\"ही समस्या से ग्रस्त है। एक ऐसी तकनीक के लिए 2015-12-08 अपडेट को stackoverflow.com/a/8669636/1012053 पर देखें जो मेरे सभी परीक्षण में विश्वसनीय रही हो।
डेबनहम

@AlexanderGelbukh यह उद्धरण के बिना काम करता है। बेशक, यह आपको सीमित करता है जब निर्देशिका पथ में रिक्त स्थान होने की बात आती है।
मरकुस .377

1
हां, बिना उद्धरण के यह काम करता है। हालाँकि, उद्धरण के साथ यह स्थानीय ड्राइव के लिए भी काम नहीं करता है: if exist c:\Windows\nul echo okकहते हैं ok, लेकिन if exist "c:\Windows\nul" echo okकुछ भी नहीं कहते हैं। जैसा कि मैंने कहा है, जबकि if exist "c:\Program Files\nul" echo okकुछ नहीं if exist "c:\Program Files\" echo okकहता है , कहता है okऔर इस प्रकार रिक्त स्थान के लिए भी काम करता है।
अलेक्जेंडर गेल्बुक

34

मुझे लगता है कि उत्तर यहाँ है (संभवतः डुप्लिकेट):

यदि कोई फ़ाइल किसी बैच स्क्रिप्ट में निर्देशिका है तो परीक्षण कैसे करें?

IF EXIST %VAR%\NUL ECHO It's a directory

% VAR% को अपनी निर्देशिका से बदलें। कृपया मूल उत्तर पढ़ें क्योंकि फ़ोल्डर के नाम में सफेद रिक्त स्थान को संभालने के बारे में विवरण शामिल हैं।

जैसा कि foxidrive ने कहा, यह NT क्लास विंडो पर विश्वसनीय नहीं हो सकता है। यह मेरे लिए काम करता है, लेकिन मुझे पता है कि इसकी कुछ सीमाएँ हैं (जो आप संदर्भित प्रश्न में पा सकते हैं)

if exist "c:\folder\" echo folder exists 

आधुनिक खिड़कियों के लिए पर्याप्त होना चाहिए।


6
NT क्लास विंडो पर \ nul तकनीक विश्वसनीय नहीं है। हालाँकि MSDOS और Win9x में यह ठीक था। आधुनिक विंडोज में समाधान बस है if exist "c\:folder\" echo folder exists
foxidrive

1
मुझे लगता है कि यह संदर्भित लिंक में भी निर्दिष्ट है।
कॉसमैन वाना

अभी भी यह नहीं मिलता है कि मैं क्यों अपमानित हो गया (जिसका अर्थ है "उपयोगी नहीं")। मैंने उस प्रश्न के संदर्भ को जोड़ा जहां उत्तर आवश्यक परिदृश्य को कवर करते हैं।
कॉसमैन वानो

उपयोगी नहीं हो सकता है क्योंकि यह वर्तमान मशीनों पर लागू नहीं है, और आपके पहले के उत्तर ने कोई अंतर नहीं किया। कुछ लोग अभी भी आपके उत्तर को रद्द कर देंगे क्योंकि यह प्रश्न का उत्तर नहीं देता है।
foxidrive

2
से support.microsoft.com/kb/65994 "NUL हमेशा एक स्थानीय MS-DOS FAT ड्राइव पर मौजूद है" - के रूप मेंE:\NUL
सीएडी लड़का
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.