खोज…


टिप्पणियों

Scripting.FileSystemObject इस विषय में विरासत विधियों की तुलना में अधिक मजबूत है। इसे लगभग सभी मामलों में पसंद किया जाना चाहिए।

निर्धारण यदि फ़ोल्डर और फ़ाइलें मौजूद हैं

फ़ाइलें:

यह निर्धारित करने के लिए कि क्या कोई फ़ाइल मौजूद है, केवल फ़ाइल नाम को Dir$ फंक्शन में पास करें और देखें कि क्या यह परिणाम देता है। ध्यान दें कि Dir$ जंगली-कार्ड का समर्थन करता है, इसलिए एक विशिष्ट फ़ाइल के लिए परीक्षण करने के लिए, पारित pathName को यह सुनिश्चित करने के लिए परीक्षण किया जाना चाहिए कि इसमें उन्हें शामिल नहीं किया गया है। नीचे का नमूना एक त्रुटि उठाता है - यदि यह वांछित व्यवहार नहीं है, तो फ़ंक्शन को केवल False वापस करने के लिए बदला जा सकता है।

Public Function FileExists(pathName As String) As Boolean
    If InStr(1, pathName, "*") Or InStr(1, pathName, "?") Then
        'Exit Function   'Return False on wild-cards.
        Err.Raise 52    'Raise error on wild-cards.
    End If
    FileExists = Dir$(pathName) <> vbNullString
End Function

फ़ोल्डर (डार $ विधि):

यदि कोई फ़ोल्डर वैकल्पिक attributes पैरामीटर के लिए vbDirectory को निर्दिष्ट करके मौजूद है, तो यह निर्धारित करने के लिए Dir$() फ़ंक्शन का भी उपयोग किया जा सकता है। इस मामले में, पारित pathName मान एक पथ विभाजक ( \ ) के साथ समाप्त होना चाहिए, क्योंकि मिलान फ़ाइल नाम गलत सकारात्मकता का कारण होगा। ध्यान रखें कि वाइल्ड-कार्ड को केवल अंतिम पथ विभाजक के बाद अनुमति दी जाती है, इसलिए नीचे दिए गए उदाहरण फ़ंक्शन में रन-टाइम त्रुटि 52 - "खराब फ़ाइल नाम या संख्या" होगी यदि इनपुट में वाइल्ड-कार्ड है। यदि यह वांछित व्यवहार नहीं है, तो फ़ंक्शन के शीर्ष On Error Resume Next असहजता। यह भी याद रखें कि Dir$ सापेक्ष फ़ाइल पथों का समर्थन करता है (अर्थात ..\Foo\Bar ), इसलिए परिणाम केवल तब तक मान्य होने की गारंटी है जब तक कि वर्तमान कार्यशील निर्देशिका को परिवर्तित नहीं किया जाता है।

Public Function FolderExists(ByVal pathName As String) As Boolean
    'Uncomment the "On Error" line if paths with wild-cards should return False
    'instead of raising an error.
    'On Error Resume Next    
    If pathName = vbNullString Or Right$(pathName, 1) <> "\" Then
        Exit Function
    End If
    FolderExists = Dir$(pathName, vbDirectory) <> vbNullString
End Function

फ़ोल्डर (ChDir विधि):

यदि फ़ोल्डर मौजूद है, तो ChDir कथन का उपयोग परीक्षण करने के लिए भी किया जा सकता है। ध्यान दें कि यह विधि अस्थायी रूप से पर्यावरण को बदल देगी जो VBA में चल रही है, इसलिए यदि यह एक विचार है, तो इसके बजाय Dir$ पद्धति का उपयोग किया जाना चाहिए। यह अपने पैरामीटर के साथ बहुत कम क्षमा करने का लाभ है। यह विधि सापेक्ष फ़ाइल पथों का भी समर्थन करती है, इसलिए Dir$ विधि के समान ही चेतावनी है।

Public Function FolderExists(ByVal pathName As String) As Boolean
    'Cache the current working directory
    Dim cached As String
    cached = CurDir$

    On Error Resume Next
    ChDir pathName
    FolderExists = Err.Number = 0
    On Error GoTo 0
    'Change back to the cached working directory.
    ChDir cached
End Function

फ़ाइल फ़ोल्डर बनाना और हटाना


नोट: संक्षिप्तता के लिए, नीचे दिए गए उदाहरण इस विषय में फ़ोल्डर और फ़ाइलों के मौजूद होने के निर्धारण से FolderExists फ़ंक्शन का उपयोग करते हैं।


MkDir स्टेटमेंट का उपयोग एक नया फोल्डर बनाने के लिए किया जा सकता है। यह ड्राइव अक्षर ( C:\Foo ), UNC नाम ( \\Server\Foo ), सापेक्ष पथ ( ..\Foo ), या वर्तमान कार्य निर्देशिका ( Foo ) युक्त पथ को स्वीकार करता है।

यदि ड्राइव या UNC नाम छोड़ा गया है (यानी \Foo ), तो फ़ोल्डर वर्तमान ड्राइव पर बनाया गया है। यह वर्तमान कार्य निर्देशिका के समान ड्राइव हो सकता है या नहीं भी हो सकता है।

Public Sub MakeNewDirectory(ByVal pathName As String)
    'MkDir will fail if the directory already exists.
    If FolderExists(pathName) Then Exit Sub
    'This may still fail due to permissions, etc.
    MkDir pathName
End Sub

RmDir कथन का उपयोग मौजूदा फ़ोल्डरों को हटाने के लिए किया जा सकता है। यह MkDir के समान रूपों में पथ स्वीकार करता है और वर्तमान कार्य निर्देशिका और ड्राइव के लिए समान संबंध का उपयोग करता है। ध्यान दें कि स्टेटमेंट विंडोज rd शेल कमांड के समान है, इसलिए यदि रन डाइरेक्टरी खाली नहीं है तो रन-टाइम एरर 75: "पाथ / फाइल एक्सेस एरर" को फेंक देगा।

Public Sub DeleteDirectory(ByVal pathName As String)
    If Right$(pathName, 1) <> "\" Then
        pathName = pathName & "\"
    End If
    'Rmdir will fail if the directory doesn't exist.
    If Not FolderExists(pathName) Then Exit Sub
    'Rmdir will fail if the directory contains files.
    If Dir$(pathName & "*") <> vbNullString Then Exit Sub
    
    'Rmdir will fail if the directory contains directories.
    Dim subDir As String
    subDir = Dir$(pathName & "*", vbDirectory)
    Do
        If subDir <> "." And subDir <> ".." Then Exit Sub
        subDir = Dir$(, vbDirectory)
    Loop While subDir <> vbNullString
    
    'This may still fail due to permissions, etc.
    RmDir pathName
End Sub


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow