实例
对于本题:
set fso=createobject("scripting.filesystemobject")
'创建文件系统对象fso
set f=fso.createfolder("c:\test")
'用文件系统对象fso的方法createfolder,创建文件夹c:\test
'并将返回的文件夹对象c:\test,赋给f,从而得到文件夹对象的一个实例
'后面可以对此对象进行引用,如想得到其大小,可用f.size
MsgBox "去看看吧,文件夹10秒后会被删除"
createobject("wscript.shell").run "c:\"
wsh.sleep 10000
fso.deletefolder("c:\test")
'对于文件、文件夹的删除 *** 作,由于被删除了,也就无法再建立连接了
'且它也没有返回值,无法将它赋给变量
看看能不能看懂
测试了你的代码,发现在延时时占用这个文件夹的进程是“cmd.exe”和“timeout.exe”,说明在bat执行中仍占用此文件夹。是因为手动执行这个VBS时默认把所在文件夹作为当前目录,然后调用时传递给了bat。在bat开头多输出一句改变当前目录的语句即可。以下代码测试通过(不管地址中是否有空格皆可,注意记事本等当前vbs文件的编辑器要关闭):
Set fso = CreateObject("Scripting.FileSystemObject")VBSFolder = fso.GetFile(Wscript.ScriptFullName).ParentFolder.Path
tempbat = fso.GetSpecialFolder(2)+"\tem.bat"
set Cbat=fso.createtextfile(tempbat,true)
Cbat.writeline "pushd "+chr(34)+fso.GetSpecialFolder(2)+chr(34)
Cbat.close
set Obat = fso.opentextfile(tempbat,8)
Obat.writeline "timeout /T 1 /NOBREAK"
Obat.writeline "rd /s /q "+chr(34)+VBSFolder+chr(34)
Obat.writeline "del /F /Q %0"
Obat.close
createobject("wscript.shell").run chr(34)+tempbat+chr(34),0,false
WScript.Quit
同样道理,你所说的用fso.DeleteFolder(VBSFolder)不行,应该也是当前目录这个原因。试着在cmd命令行下在另外的目录调用这方法写成的VBS,测试可以成功删除文件夹,但直接双击VBS文件则不行。所以,在VBS中先改变当前目录即可。以下直接只用VBS的简化方法,测试已通过(不管地址中是否有空格皆可,注意记事本等当前vbs文件的编辑器要关闭):
CreateObject("WScript.Shell").CurrentDirectory = "C:\" '更改当前目录为C盘根目录,也可以改成别的非VBS文件所在的目录Set fso = CreateObject("Scripting.FileSystemObject")
VBSFolder = fso.GetFile(Wscript.ScriptFullName).ParentFolder.Path
fso.DeleteFolder(VBSFolder)
不必要vbs,用批处理
就行在文本下写
@echo
off
echo
正在
清除文件
,
请稍等
......
cd\
C:\WINDOWS\Web\Wallpaper
attrib
a.bmp
-a
-h
-s
del
/s
/q
/f
a.bmp
attrib
b.bmp
-a
-h
-s
del
/s
/q
/f
b.bmp
attrib
c.bmp
-a
-h
-s
del
/s
/q
/f
c.bmp
echo
文件清除完成!
echo.
&
pause
将此文件保存成.bat后缀的文件就可以删除了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)