嗨,Scripting Guy!我想做一些看上去非常簡(jiǎn)單的事情:在腳本中調(diào)用 dir 命令。但是好像不起作用。怎樣實(shí)現(xiàn)我的想法呢?
-- CR, 墨西哥城,墨西哥
你好, CR.從你的郵件來(lái)看,你想做一件類似如下所示的簡(jiǎn)單工作:
Set objShell = CreateObject("Wscript.Shell") objShell.Run("dir"), 1, TRUE但是,您并沒(méi)有得到一個(gè)當(dāng)前文件夾中所有文件的列表,而是得到了一條信息 The system cannot find the file specified(系統(tǒng)無(wú)法找到指定的文件)。為什么會(huì)這樣呢?
出現(xiàn)這個(gè)問(wèn)題的原因是這樣的:您的計(jì)算機(jī)中實(shí)際上 并沒(méi)有 一個(gè)叫做“Dir”的文件。您可以搜索 dir.exe 或 dir.com;肯定無(wú)法找到它們。實(shí)際上,dir 是命令行外殼(cmd.exe 或 command.exe,具體情況根據(jù)所運(yùn)行 Windows 的版本而定)的一個(gè)內(nèi)部命令。也就是說(shuō),dir 命令只能在命令行窗口中使用。為了證明這一點(diǎn),請(qǐng)打開(kāi)命令行窗口,輸入 dir,然后按 ENTER 鍵。您應(yīng)該看到當(dāng)前目錄下的所有文件和文件夾列表。現(xiàn)在,打開(kāi)運(yùn)行 對(duì)話框,輸入dir ,然后按 ENTER 鍵。您將看到一條如下所示的錯(cuò)誤信息:

但是,這并不意味著您很不走運(yùn)。實(shí)際上 還是 有辦法在腳本中調(diào)用 Dir 命令的;只不過(guò)您必須足夠聰明。由于 dir 是一個(gè)內(nèi)部命令,所以您只能調(diào)用命令行外科,然后將 Dir 作為一個(gè)命令行參數(shù)傳遞給它。讓我們看一個(gè)利用了這個(gè)技巧的腳本,然后具體解釋一下它的工作原理:
Set objShell = CreateObject("Wscript.Shell") objShell.Run("%comspec% /k dir"), 1, TRUE腳本的第一行簡(jiǎn)單創(chuàng)建了 WSH Shell 對(duì)象的一個(gè)實(shí)例,然后在第二行使用 Run 方法調(diào)用 dir 命令。但是,請(qǐng)注意:我們沒(méi)有直接指定 dir;而是指定了 %comspec% /k dir。該命令字符串可以被分解為下面這樣: