जवाबों:
@echo off
IF exist myDirName ( echo myDirName exists ) ELSE ( mkdir myDirName && echo myDirName created)
बार्लोप द्वारा जोड़ा गया
जबकि ऊपर इस विशेष स्थिति के लिए काम करता है, शीर्षक विशेष रूप से एक निर्देशिका के लिए परीक्षण के बारे में कहता है। फॉग की टिप्पणी के if exist mydirname\
बजाय प्रयोग करने का if exist mydirname
तरीका है। कुछ उत्तरों ने \ nul का उपयोग किया है, लेकिन \ nul NT में समस्याग्रस्त है। एक अनुगामी बैकस्लैश शामिल नहीं है जो एक फ़ाइल या निर्देशिका के लिए परीक्षण करेगा। इसलिए, एक निर्देशिका के लिए, पीछे आने वाले बैकलैश को शामिल करें।
if exist mydirname\
और बाकी जैसा आप कहेंगे। वैकल्पिक रूप से, आप वास्तव में एक test
बाइनरी प्राप्त कर सकते हैं और इसे विंडोज पर उपयोग कर सकते हैं।
mkdir
इसे नहीं कर सकते ।
if not 1==1 echo hmm
तो इसी तरह से या अगर myDirName \ ELSE blahblahblah मौजूद है
यहाँ है जो मुझे अभी पता चला है:
यदि कोई फ़ाइल मौजूद है तो आप परीक्षण कर सकते हैं; यदि निर्देशिका मौजूद है, तो इसमें एक nul फ़ाइल होगी, यदि nul फ़ाइल मौजूद नहीं है, तो निर्देशिका मौजूद नहीं है।
IF exist myDirName/nul ( echo myDirName exists ) ELSE ( mkdir myDirName && echo myDirName created)
if exist dirname
जो विंडोज एनटी के लिए विशिष्ट प्रतीत होता है।
\nul
, यह Windows NT में अब आवश्यक नहीं है, सादे if exist "C:\Program Files (x86)"
को काम करना चाहिए (जब तक कि आप अभी भी विंडोज 98 को लक्षित नहीं कर रहे हैं ...)
बैकस्लैश का उपयोग करें, आगे की स्लैश myDirName\nul
नहीं : नहींmyDirName/nul
md foo
echo.>bar
for %I in (foo bar xyz) do @(
if exist %I (
if exist %I\nul (
echo -- %I is a directory
) else (
echo -- %I is a file
)
) else (
echo -- %I does not exist
)
)
- फू एक निर्देशिका है
- बार एक फाइल है
- xyz मौजूद नहीं है
संपादित करें: यह केवल तभी काम करता है जब निर्देशिका नाम में रिक्त स्थान न हों
कुछ लोगों ने सुझाव दिया है कि वे NT में मज़बूती से काम नहीं करेंगे
C:\blah>md abc
C:\blah>if exist abc\nul echo yes
yes
C:\blah>if exist "abc\nul" echo yes
C:\blah>
http://www.dostips.com/forum/viewtopic.php?f=3&t=4913
foxidrive writes-
The trick with nul worked in pre NT versions of windows.
Now you would use this, with a trailing backslash.
if exist "C:\abcde\" echo the folder exists
सवाल फिर से
C:\blah>if exist "abcd\" (echo yes) else (echo no && mkdir abcd)
no
C:\blah>if exist "abcd\" (echo yes) else (echo no && mkdir abcd)
yes
C:\blah>
मैं सोचता था कि joe में गिरावट क्यों थी क्योंकि मैं विंडोज 7 पर उसी तरह की समस्या का अनुभव कर रहा था, अर्थात्
यदि EXIST फ़ाइल नाम \ NUL है
दोनों फ़ाइलों और निर्देशिकाओं के लिए TRUE लौट रहा था। मुझे www.robvanderwoude.com/battech_ifexistfolder.php पर एक वैकल्पिक समाधान मिला और DVF के फॉर लूप के संशोधित संस्करण के साथ आया:
FOR %I in (foo bar xyz) DO @( PUSHD %I && (POPD & echo -- %I is a directory) || ( IF exist %I ( echo -- %I is a file ) ELSE ( echo -- %I does not exist ) ) )
मुझे लगता है कि कई को फ़ाइलों और फ़ोल्डरों के बीच अंतर करने में समस्या है। क्या किसी ने इसे अस्तित्व में लाने के बाद इसे जाँचने की कोशिश की है? तो cd या तो सफल होगा या असफल।
set MyDir = "MyTestDir"
IF exist MyDir (
cd MyDir
IF ERRORLEVEL NEQ 0 (
echo "Error: %MyDir% already exists, but it is a file!"
exit 1
) else (
# Do not forget to cd back
cd ..
)
) else (
# Did not exist yet, so create it.
mkdir MyDir
)
MyDir
पहली पंक्ति के बाद की सभी घटनाएं होनी चाहिए %MyDir%
। (2) बहु-स्तरीय पाथनाम (जैसे, ) या यहां तक कि एक पूर्ण पथ-नाम (जैसे, ) होने पर cd ..
आप जो चाहते हैं वह नहीं करेंगे । / और / या का उपयोग करने पर विचार करें । %MyDir%
Pictures\cats
\Windows
pushd
popd
setlocal
exist myDirName/nul
यह भी सच है अगर myDirName एक फाइल है, तो व्हिस सर्च की गई कार्यक्षमता नहीं है
C:\blah>touch abe<ENTER>C:\blah>if exist abe\nul echo err<ENTER> C:\blah>if exist abe/nul echo err<ENTER>C:\blah>
मैं NT में \ Nul का कोई प्रशंसक नहीं हूँ, लेकिन यह नहीं है। आपको कुछ आउटपुट देना चाहिए था।
एक फ़ोल्डर ढूँढना यह मुश्किल नहीं होना चाहिए। मेरा समाधान, पर्ल का उपयोग करें:
के लिए ($ cnt = $ # ARGV; $ cnt> = 0; - $ cnt) { अगर (-d "$ ARGV [$ cnt]") { प्रिंट "argv [$ cnt] = $ ARGV [$ cnt] एक फ़ोल्डर \ n" है; $ dir = $ ARGV [$ cnt]; टूटना; } अन्य { प्रिंट "argv [$ cnt] = $ ARGV [$ cnt] एक फ़ोल्डर नहीं है \ n"; } }
mkdir -p myDirName
:। दिन बिताने के बाद बैच-श * टी में अपेक्षाकृत सरल बैश-लिपियों का अनुवाद करने की कोशिश कर रहा है (किसी फ़ंक्शन के परिणाम को एक चर के रूप में निर्दिष्ट करते हुए?), मैंने बस लोगों को साइबरविन स्थापित करने का निर्णय लिया है।