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

但是,這并不意味著(zhù)您很不走運。實(shí)際上 還是 有辦法在腳本中調用 Dir 命令的;只不過(guò)您必須足夠聰明。由于 dir 是一個(gè)內部命令,所以您只能調用命令行外科,然后將 Dir 作為一個(gè)命令行參數傳遞給它。讓我們看一個(gè)利用了這個(gè)技巧的腳本,然后具體解釋一下它的工作原理:
Set objShell = CreateObject("Wscript.Shell") objShell.Run("%comspec% /k dir"), 1, TRUE腳本的第一行簡(jiǎn)單創(chuàng )建了 WSH Shell 對象的一個(gè)實(shí)例,然后在第二行使用 Run 方法調用 dir 命令。但是,請注意:我們沒(méi)有直接指定 dir;而是指定了 %comspec% /k dir。該命令字符串可以被分解為下面這樣:
| %comspec% | 打開(kāi)一個(gè)命令行窗口。%comspec% 是一個(gè)指向當前命令行外殼的環(huán)境變量。通過(guò)使用 %comspec%,您不必擔心命令行外殼是 cmd.exe 還是 command.exe;%comspec% 會(huì )自動(dòng)選擇正確的一個(gè)。 |
| /k | 在調用 Dir 命令后,確保窗口始終保持打開(kāi)。這就是 /k 參數的用處。如果我們想要確保命令窗口會(huì )在 Dir 命令調用完成后被自動(dòng)關(guān)閉,應該將 /k (keep) 修改為 /c (close)。 |
| dir | 運行 dir 命令。 |
聯(lián)系客服