2016-04-13 29 views
2

Kök dizinde c: \ testteki tüm klasörlere 'pst' adında bir alt klasör oluşturan bir komut dosyası var. 'Pst' klasörünü gizlemek için bu betiğe hangi kodu eklemem gerekir?Birden çok gizli alt klasör oluşturmak için vbscript

folder_path = "c:\test" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder = fso.GetFolder(folder_path) 
For each f in folder.SubFolders 
fso.CreateFolder(f & "\PST") 
next 

Her türlü yardım büyük beğeni topluyor.

cevap

1

Böyle bir şey deneyebilirsiniz: Yapmanız gereken tek şey klasör özellikleri ile oynamak

Option Explicit 
Dim fso,folder_path,folder,f 
folder_path = "c:\test" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder = fso.GetFolder(folder_path) 
For each f in folder.SubFolders 
'wscript.echo f & "\PST" 
    If Not fso.FolderExists(f & "\PST") Then 
     fso.CreateFolder(f & "\PST") 
     Call Hide(f & "\PST") 
    End If 
    If fso.FolderExists(f & "\PST") Then 
     Call Hide(f & "\PST") 
    End If 
Next 
'********************************************** 
Sub Hide(MyFolder) 
    Dim Command,Result,Ws 
    Command = "Cmd /c attrib +h " & DblQuote(MyFolder) &"" 
'wscript.echo Command 
    Set Ws = CreateObject("Wscript.Shell") 
    Result = Ws.Run(Command,0,True) 
End Sub 
'********************************************** 
Function DblQuote(Str) 
    DblQuote = Chr(34) & Str & Chr(34) 
End Function 
'********************************************** 
+0

öyleyse neden sadece * ceviz kırmak için bir balyoz kullanılarak * attrib' IMHO 'çağırmak için' WScript.Shell' kullanarak, 'Hidden' ayarlayarak özelliklerini değiştirmez. – Lankymart

+0

@Lankymart bunu zor yoldan yapmayı seviyorum, ve çalışıyor 05 :) – Hackoo

+1

Alınan nokta bunun büyük bir senaryonun parçası olduğunu hayal et ve bunun yerine iki COM nesnesini bir araya getirmelisin? Bu nesneler, bellekte doğru bir şekilde serbest bırakılmadıysa, performanstan söz etmese bile ne gibi etkilere sahip olabilirdi? (Hangisinin daha iyi performans gösterdiğini görmek ilginç olurdu) *. – Lankymart

2

olduğunu. Zaten FSO aradığınız

Const Directory = 16 
Const Hidden = 2 

folder_path = "c:\test" 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set folder = fso.GetFolder(folder_path) 
For each f in folder.SubFolders 
    With fso.CreateFolder(fso.BuildPath(f, "PST")) 'returns folder object 
     .Attributes = Directory Or Hidden 'set hidden flag for directory 
    End With 
Next 
+1

@Lankymart Düzeltme için teşekkürler, çok takdir ediyorum. –