TargetFolder = "C:\Logs"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TargetFolder)
Set colItems = objFolder.Items
For Each objItem in colItems
objItem.InvokeVerbEx("Print")
Next
我們只不過是連結到 C:\Logs 資料夾,然後抓取在該資料夾中發現的所有項目的集合。我們用這行程式碼將檔案組合儲存在變數 colItems 之中:
Set colItems = objFolder.Items
請注意,在此範例中我們確使 C:\Logs 只包含記錄檔,而且要列印所有的檔案,以便讓工作更為容易。如果 C:\Logs 含有其他檔案,也就是我們「不要」列印的檔案,您就必須加入程式碼,將想要列印和不要列印的檔案加以區分。
在 colItems 儲存檔案組合之後,我們使用 For Each 迴圈來循環通過集合中的所有項目。針對集合中的每個項目 (換句話說,就是資料夾中的每個檔案),我們使用 InvokeVerbEx 方法,並告知 InvokeVerbEx 我們想要列印每個檔案:
objItem.InvokeVerbEx("Print")
就是這麼簡單。執行這個指令碼以後,所有的檔案就會逐一適當地列印出來。
如果現在我們想要進行其他作業,比如說,編輯每個檔案?沒問題;只要以快顯功能表中的適當參數名稱來取代 Print 參數即可辦到:
TargetFolder = "C:\Logs"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TargetFolder)
Set colItems = objFolder.Items
For Each objItem in colItems
objItem.InvokeVerbEx("Edit")
Next
在此必須留意的事實為,當您使用 InvokeVerbEx 時,您的指令碼就會複寫您在 Windows 檔案總管中看到的相同動作。例如:如果用滑鼠右鍵按一下檔案並選擇 [刪除],在 Windows 檔案總管中會發生什麼事?沒錯:檔案不會自動刪除,而是出現對話方塊詢問您是否確定要將檔案傳送到「資源回收筒」中。這是相當重要的,因為如果您將 Delete 傳遞給 InvokeVerbEx,就會出現相同的對話方塊。這個指令碼不會自動刪除 C:\Logs 之中的檔案,而會為資料夾中的每個檔案顯示確認對話方塊:
TargetFolder = "C:\Logs"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TargetFolder)
Set colItems = objFolder.Items
For Each objItem in colItems
objItem.InvokeVerbEx("Delete")
Next
並且也請留意,您可能無法使用出現在快顯功能表中的「所有」選項。如需關於判斷哪些選項可以使用與哪些選項無法使用的詳細資訊,請參閱 Microsoft Windows 2000 指令碼指南 (英文) 中的此節。 |