FSO.DeleteFolder()方法和oWS.Run“%comspec%/ c rmdir ...”之间有什么区别,1,True?

时间:2015-12-16 14:51:39

标签: vbscript wsh

我写了一个vbs。

Set FSO = CreateObject("Scripting.FileSystemObject")  
Set oWS = CreateObject("WScript.Shell")  
Set objFolderUsers = FSO.GetFolder("\\"& strComputer &"\C$\Users\").Subfolders  
...  

后来,我做了类似的事情:

For Each objFlder In objFolderUsers

    user = Right(objFlder, Len(objFlder) - InStrRev(objFlder, "\"))
    temp = objFlder & "\AppData\Local\Temp\"

    'That's the line !...       
    If FSO.FolderExists(temp) Then FSO.DeleteFolder(temp)

    If Not IsExcludeProfile(user) Then
        If Left(objFlder.DateLastModified, 4) <= minYear Then 
            oWS.Run "%comspec% /c rmdir " & objFlder & " /s /q", 0, True
            oWS.Run "%comspec% /c net user " & user & " /delete", 0, True
        End If
    End If
Next

我的问题是: FSO.DeleteFolder(temp) oWS.Run“%comspec%/ c rmdir”&amp; temp,1,True 因为当我做第一件事情都没问题但是当我做第二件事(oWS.Run)和objFlder =“Default”时它全部被删除,而不仅仅是我想要的Temp。 ..

1 个答案:

答案 0 :(得分:0)

尝试将封闭引号放在传递给rmdir的文件名中,因为空格可能会终止它在结束之前收到的字符串:

oWS.Run "%comspec% /c rmdir """ & objFlder & """ /s /q", 0, True

提醒一下&#34;&#34;在vbs中的字符串文字内部意味着单个&#34;在字符串的内容中。