2009-09-16 11 views
6

ठीक है, मुझे एक vbscript मिला है जो फ़ाइलों की एक सूची पुनर्प्राप्त करने के लिए एक निर्देशिका और इसके सबफ़ोल्डर के माध्यम से पुनरावृत्त करता है। यहाँ उदाहरण:वीबीस्क्रिप्ट उपफोल्डर्स के सेट स्तर के माध्यम से पुनरावृत्त करने के लिए

Set FSO = CreateObject("Scripting.FileSystemObject") 
ShowSubfolders FSO.GetFolder("C:\Scripts") 

Sub ShowSubFolders(Folder) 
    For Each Subfolder in Folder.SubFolders 
     Wscript.Echo Subfolder.Path 
     ShowSubFolders Subfolder 
    Next 
End Sub 

अब इस एक व्यापक सूची प्राप्त करने के लिए महान है, लेकिन प्रदर्शन पर भयानक है अगर वहाँ एक गहरी फ़ोल्डर पदानुक्रम है।

तो मेरा सवाल यह है कि, स्क्रिप्ट के इस हिस्से को संपादित करने का कोई तरीका है ताकि यह सबफ़ोल्डर के स्तरों की एक निश्चित संख्या के माध्यम से ही हो सके? फ़ोल्डर संरचनाओं की गहराई के कारण नीचे ड्रिल करने के लिए स्तरों की एक आदर्श मात्रा 3 स्तर होगी।

उत्तर

13

अपने पुनरावर्ती कॉल एक निकास हालत आला

Set FSO = CreateObject("Scripting.FileSystemObject") 
ShowSubfolders FSO.GetFolder("C:\Scripts"), 3 

Sub ShowSubFolders(Folder, Depth) 
    If Depth > 0 then 
     For Each Subfolder in Folder.SubFolders 
      Wscript.Echo Subfolder.Path 
      ShowSubFolders Subfolder, Depth -1 
     Next 
    End if 
End Sub 
0

आप पथ के बैकस्लैश की संख्या की गणना फ़ोल्डर गहराई की गणना कर सकते दें ... नीचे की तरह तो कुछ:

Set objFSO = CreateObject("Scripting.FileSystemObject") 
objStartFolder = "C:\Scripts" 

Set objFolder = objFSO.GetFolder(objStartFolder) 

ShowSubfolders objFSO.GetFolder(objStartFolder) 

Sub ShowSubFolders(Folder) 
    For Each Subfolder in Folder.SubFolders 
     ' FolderDepth = (Length of current folder path) - (number if backslashes in current folder path) - (number of backslahes in path you have specified for objStartFolder) 
     FolderDepth = len(Subfolder.Path) - len(replace(Subfolder.Path,"\","")) - 1 
     ' Specifying FolderDepth = 1 will give everything inside your objStartFolder 
     If FolderDepth = 1 then 
      Wscript.Echo Subfolder.Path 
     End If 
     ShowSubFolders Subfolder 
    Next 
End Sub 
संबंधित मुद्दे