Windows 任務計划與 BAT 批處理文件都是我們經常使用的工具,一個可以幫助我們定期執行計划的任務、一個可以幫助我們一次執行一系列預先編好的命令。在 Windows 系統的維護工作中,我們經常需要將任務計划與批處理配合起來使用,即通過設置任務計划定期執行批處理文件定義的一系列命令與操作。
有時候,我們可能會遇到任務計划與批處理無法正常協同工作的情況。例如,一個同樣的批處理文件,我們可能手動運行它時一切正常
(說明批處理文件的內容沒有錯誤),但將這個批處理文件添加為任務計划后卻無法按照預期運行。筆者在微軟中文論壇收集了幾種
解決任務計划與批處理無法協同工作的方法,希望可以幫助大家在遇到類似問題時參考。
1. 在任務計划中正確設置執行批處理的用戶身份與權限。
當我們在任務計划中添加新任務時,其中有一個步驟是指定運行此任務的用戶帳戶,並需要輸入用戶帳戶的密碼進行確認。如果任務計划設置的用戶帳戶身份或權限,與我們手動運行批處理文件時的用戶帳戶不同,就可能會出現以任務計划方式運行批處理的結果與手動運行同樣的
批處理時結果不同的現象。
例如,假設一個批處理涉及的命令需要管理員權限或者特定用戶帳戶的配置文件才可以正常運行,如果執行此批處理的任務計划被指定為一個
非管理員帳戶或不具備相應用戶配置的用戶帳戶,那么此批處理很可能在以任務計划的方式運行時無法得到其預期的效果。因此,當我們在添加任務計划並希望以另一個用戶帳戶的
身份與權限運行批處理時,一定要在添加新任務向導中檢查運行批處理的用戶帳戶身份與權限是否滿足運行此批處理的要求。
2. 通過快捷方式為批處理指定起始位置。
有些批處理文件需要我們為其設置好特定的“起始位置”才可以正常運行,否則可能會遇到批處理無法找到指定路徑的錯誤。當我們手動執行
批處理時,無論是在資源管理器中用鼠標雙擊運行批處理,還是首先打開命令提示符窗口、然后再在命令提示符中執行批處理,
資源管理器當前打開的文件夾位置與命令提示符當前
所在的提示符位置都已經自動為我們設置好了執行批處理時的起始位置。然而,
當我們以任務計划方式執行批處理時,任務計划卻無法自動指定執行批處理時所需的起始位置,這樣也可能會造成以任務計划方式執行批處理時無法得到預期的效果。
為了解決這一問題,我們可以首先為批處理文件建立一個快捷方式,然后修改快捷方式的屬性,在“常規”選項卡中設置正確的“起始位置”,接下來我們再添加任務計划,將新任務指定為這個快捷方式文件而不是批處理本身。這樣,任務計划會在任務指定的時間自動執行指向
批處理的快捷方式,對應的批處理在運行時就具有正確的起始位置了。
3. 盡量避免在批處理內容中出現過多的引號。
如果在批處理文件的內容里出現了過多的引號,即批處理中有一條或多條命令及參數被引號擴起來,這不僅可能在編寫批處理命令時容易出錯,而且可能會造成特定版本 Windows 的任務計划無法正確識別批處理中包含的命令。特別是在一個父級引號中還有子級的引號時,尤其容易出現此類問題。根據微軟知識庫 KB951246 提供的信息,這個問題主要存在於 Windows Vista/Server 2008 系統。
4. 將批處理文件轉換為可執行文件或腳本后再添加任務計划。
有時當任務計划無法正確執行批處理文件的部分內容時,我們還可以嘗試將批處理轉換為其它格式的可執行文件或腳本,然后再添加至
任務計划。轉換格式雖然執行的命令與任務不變,但將批處理轉換為可執行文件或腳本可以改變任務運行的順序與方式,有時說不定可以
解決問題。
批處理常見的格式轉換包括將 .BAT 文件轉換為 .EXE 或 .COM 可執行文件,或者轉換為 .VBS 腳本,這類轉換可以通過 BAT2EXE、
BAT2COM、BAT to EXE Converter、批處理加密轉換器等第三方軟件實現。
5. 在批處理中添加為正常運行后續命令所需的先決命令。
如果我們遇到了一些比較極端的批處理與任務計划無法協同工作的問題,無論怎樣在任務計划的運行環境中 設置都不能解決,
如果我們遇到了一些比較極端的批處理與任務計划無法協同工作的問題,無論怎樣在任務計划的運行環境中 設置都不能解決,
那么可以考慮將一些正確完成批處理命令所需的先決命令添加在原批處理內容的最前面, 在批處理自身的層面加以解決。
例如,筆者最近在微軟中文論壇見到一則問題:有位用戶編寫了一個備份開發代碼的批處理,並將其添加為任務計划,希望在每天凌晨時
自動運行。但是,這個批處理涉及的文件備份與復制操作需要訪問 $IPC 網絡映射地址。經測試,用戶編寫的批處理內容沒有問題,
如果手動運行批處理,可以正確地訪問目標地址並且
完成備份;但如果將此批處理添加為任務計划就無法正確執行備份與復制操作。
設置任務計划的用戶權限、設置起始位置、對批處理進行格式轉換等方法均無法解決。
最終解決這個問題的方法是在批處理內容的前面添加了一條:
NET USE Z:\\XXX.XXX.XXX.XXX\D$ "Password" /User:"Administrator"
將批處理正常訪問映射地址的先決命令寫在原批處理文件內容的前面,最終這個批處理文件就可以通過任務計划方式正常運行了。
轉自:https://blog.csdn.net/tzysf/article/details/51302039
https://www.cnblogs.com/lxshanye/archive/2013/02/02/2889732.html