VBScript Shell - Windows CMD之间的差异

时间:2014-09-05 18:18:47

标签: shell vbscript

我在VBScript中使用Wscript.Shell对象来控制隐藏的shell。

我想在应用程序启动之前删除一些测试文件,所以我查看了一个MSDOS命令来有条件地删除文件。

if exist name del name

这在CMD中工作正常,并且不会对不存在的文件发出警告。 但是,在VBScript shell中,这将生成文件not exists警告,好像if exist不是命令的一部分。

这尤其令人讨厌,因为在VBScript shell中错误通过MsgBox显示并阻止应用程序运行。

2 个答案:

答案 0 :(得分:2)

del是一个内在/内部命令,它由shell(cmd.exe)提供,而不是由名为del.exe / com / ....的可执行文件提供。所以它从shell中“起作用”/ dos box /命令行窗口。

WScript.Shell对象的.Run(作为.Exec)方法启动进程(可执行文件),而不是shell。因此del(和dirother 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