2016-04-13 7 views
2

Ich habe ein Skript, das einen Unterordner namens "PST" zu allen Ordnern im Stammverzeichnis c: \ test erstellt. Welchen Code muss ich diesem Skript hinzufügen, um den Ordner "pst" zu verbergen?VBScript zum Erstellen mehrerer versteckter Unterordner

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 

Jede Hilfe wird sehr geschätzt.

Antwort

1

Sie können so etwas wie dies versuchen:

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

Sie bereits FSO fordern ändern, warum also nicht nur die Attribute von 'Hidden' Einstellung mit' WScript.Shell' zu nennen 'attrib' imho * ist mit einem Vorschlaghammer zu knacken mit einem Walnuss *. – Lankymart

+0

@Lankymart Ich mag es auf die harte Art und Weise zu tun, und es funktioniert 5/5 :) – Hackoo

+1

Punkt genommen, aber stellen Sie sich vor, dies war Teil eines riesigen Skript und Sie mussten zwei COM-Objekte statt der einen instanziieren? Welche Implikationen könnte das dann haben, wenn diese Objekte nicht korrekt im Speicher freigegeben würden, ganz zu schweigen von der Leistung * (Es wäre interessant zu sehen, welche besser funktioniert) *. – Lankymart

2

Alles, was Sie brauchen, ist mit den Ordnerattribute tun spielen.

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 Vielen Dank für die Korrektur, viel zu schätzen. –

Verwandte Themen