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

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