我在VBScript中使用Wscript.Shell对象来控制隐藏的shell。
我想在应用程序启动之前删除一些测试文件,所以我查看了一个MSDOS命令来有条件地删除文件。
if exist name del name
这在CMD中工作正常,并且不会对不存在的文件发出警告。
但是,在VBScript shell中,这将生成文件not exists警告,好像if exist
不是命令的一部分。
这尤其令人讨厌,因为在VBScript shell中错误通过MsgBox显示并阻止应用程序运行。
答案 0 :(得分:2)
del
是一个内在/内部命令,它由shell(cmd.exe)提供,而不是由名为del.exe / com / ....的可执行文件提供。所以它从shell中“起作用”/ dos box /命令行窗口。
WScript.Shell对象的.Run(作为.Exec)方法启动进程(可执行文件),而不是shell。因此del
(和dir
,other intrinsics,I / O重定向和'批处理语言'不可用,除非启动% comspec%可执行文件并要求执行您想要的操作。
所以:如果像
那样的话if exist deleteme.tmp del deleteme.tmp
从命令行窗口
开始工作%comspec% /c if exist deleteme.tmp del deleteme.tmp
将作为.Run或.Exec。
的第一个参数答案 1 :(得分:1)
With CreateObject("Scripting.FileSystemObject")
If .FileExists(name) Then .DeleteFile name
End With