vbscript下调用 Dir 命令的方法

所属分类: 脚本专栏 / vbs 阅读数: 1889
收藏 0 赞 0 分享
问:

嗨,Scripting Guy!我想做一些看上去非常简单的事情:在脚本中调用 dir 命令。但是好像不起作用。怎样实现我的想法呢?

-- CR, 墨西哥城,墨西哥

答:

你好, CR.从你的邮件来看,你想做一件类似如下所示的简单工作:

Set objShell = CreateObject("Wscript.Shell") objShell.Run("dir"), 1, TRUE

但是,您并没有得到一个当前文件夹中所有文件的列表,而是得到了一条信息 The system cannot find the file specified(系统无法找到指定的文件)。为什么会这样呢?

出现这个问题的原因是这样的:您的计算机中实际上 并没有 一个叫做“Dir”的文件。您可以搜索 dir.exe 或 dir.com;肯定无法找到它们。实际上,dir 是命令行外壳(cmd.exe 或 command.exe,具体情况根据所运行 Windows 的版本而定)的一个内部命令。也就是说,dir 命令只能在命令行窗口中使用。为了证明这一点,请打开命令行窗口,输入 dir,然后按 ENTER 键。您应该看到当前目录下的所有文件和文件夹列表。现在,打开运行 对话框,输入dir ,然后按 ENTER 键。您将看到一条如下所示的错误信息:

Hey, Scripting Guy!

但是,这并不意味着您很不走运。实际上 还是 有办法在脚本中调用 Dir 命令的;只不过您必须足够聪明。由于 dir 是一个内部命令,所以您只能调用命令行外科,然后将 Dir 作为一个命令行参数传递给它。让我们看一个利用了这个技巧的脚本,然后具体解释一下它的工作原理:

Set objShell = CreateObject("Wscript.Shell") objShell.Run("%comspec% /k dir"), 1, TRUE

脚本的第一行简单创建了 WSH Shell 对象的一个实例,然后在第二行使用 Run 方法调用 dir 命令。但是,请注意:我们没有直接指定 dir;而是指定了 %comspec% /k dir。该命令字符串可以被分解为下面这样:

%comspec%

打开一个命令行窗口。%comspec% 是一个指向当前命令行外壳的环境变量。通过使用 %comspec%,您不必担心命令行外壳是 cmd.exe 还是 command.exe;%comspec% 会自动选择正确的一个。

/k

在调用 Dir 命令后,确保窗口始终保持打开。这就是 /k 参数的用处。如果我们想要确保命令窗口会在 Dir 命令调用完成后被自动关闭,应该将 /k (keep) 修改为 /c (close)。

dir

运行 dir 命令。

更多精彩内容其他人还在看

VBS获取当前目录下所有文件夹名字的代码

有时候我们需要获取当前目录下所有文件夹的名字,那么就可以参考下面的代码了
收藏 0 赞 0 分享

VBS读取注册表的两种方法

有时候我们需要用vbs来操作注册表,一般情况下有两种方法,一种是通过wshshell对象的regread,另外一种是使用WMI操作注册表,下面简单的介绍下
收藏 0 赞 0 分享

查看系统C盘剩余空间的VBS脚本

查看系统C盘剩下的空间方法有很多,在本文要为大家介绍的是通过VBS脚本是如何实现的,感兴趣的朋友不要错过
收藏 0 赞 0 分享

利用VBS实现显示系统服务列表

显示服务列表的方法有很多,在接下来的文章中为大家介绍下利用VBS是如何实现的,感兴趣的朋友不要错过
收藏 0 赞 0 分享

VBS获取文件MD5值(无组件)

VBS获取MD5值最简单的方法是直接调用CAPICOM组件,但是由于CAPICOM组件系统并不是默认安装,所以使用起来不方便
收藏 0 赞 0 分享

VBS调用Photoshop批量生成缩略图的代码

这篇文章主要为大家分享了通过vbs调用Photoshop批量生成缩略图,需要的朋友可以参考下
收藏 0 赞 0 分享

使用vbs获得外网ip并发送到邮箱里

这篇文章主要介绍了使用vbs获得外网ip并发送到邮箱里,需要的朋友可以参考下
收藏 0 赞 0 分享

vbs实现只复制比目标文件更新的文件

有时候我们需要时候备份一些文件,只有当这个文件被修改了并且不是空的时候才复制
收藏 0 赞 0 分享

vbs复制文件夹的实现代码

这篇文章主要介绍了vbs复制文件夹的实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享

VBS文本文件操作实现代码

这篇文章主要介绍了VBS文本文件操作实现代码,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多