Vbscript 什么';s FSO.DeleteFolder()方法和oWS.Run";%之间的区别comspec%/c rmdir…“是的;,1,是吗?

Vbscript 什么';s FSO.DeleteFolder()方法和oWS.Run";%之间的区别comspec%/c rmdir…“是的;,1,是吗?,vbscript,wsh,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 objFolderU

我有一个我写的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
objFolderUsers中每个objFlder的

用户=右(objFlder,Len(objFlder)-InStrRev(objFlder,“\”)
temp=objFlder&“\AppData\Local\temp\”
“这就是台词!”!。。。
如果存在FSO.folder(临时),则FSO.DeleteFolder(临时)
如果不是IsExcludeProfile(用户),则

如果左(objFlder.DateLastModified,4)尝试在传递给rmdir的文件名中加上引号,因为空格可能会终止它在结束之前接收到的字符串:

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

只是提醒一下,在vbs中,字符串文本中的“”表示字符串内容中的单个“”。

看起来您正在将
objFlder
传递给oWS.Run,而不是传递给文件夹的完整路径,该文件夹是
temp
I用于传递temp.…%comspec%/c rmdir“&temp,1,TrueWhy使用
oWS。运行
来执行像删除文件夹这样简单的操作(&temp,1,trues)?您已经在使用
FileSystemObject
来迭代
文件夹
对象,为什么不使用呢?我将尝试一下!。。。它起作用了!!thnx Lankymart!。。。事实上,oWS.Run命令适用于我不想删除的所有其他目录(管理员、公共等)?…@Louis Alex它将适用于没有空格的文件夹,只要您得到一个像
My Documents
(例如)这样的文件夹,它将不工作,除非用双引号括起来(
“My Documents”
)。