Vbscript 什么';s FSO.DeleteFolder()方法和oWS.Run";%之间的区别comspec%/c rmdir…“是的;,1,是吗?
我有一个我写的vbsVbscript 什么';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
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”
)。