Windows 2008 r2任務計劃程序執(zhí)行批處理失敗問題解決方法

2019-02-15 20:31:50 來源:互聯(lián)網(wǎng)作者:mdxy-dxy 人氣: 次閱讀 1875 條評論

文章主要介紹了Windows 2008 r2任務計劃程序執(zhí)行批處理失敗問題解決方法,需要的朋友可以參考下...

  最近遇見一個奇怪的現(xiàn)象,在做某系統(tǒng)的定期備份的時候使用到了非系統(tǒng)自帶Rsync命令,但是手動啟動沒問題,而且又非常期望批量化在多臺主機上進行,怎么辦呢?Windows Server 2003下面這樣執(zhí)行任務計劃沒問題,而就Windows Server 2008 R2下面出現(xiàn)意外。

  正常情況下我們的任務計劃會有反饋數(shù)值,通過它可以判斷這個任務計劃上次是否運行正常(詳細連接:http://support.microsoft.com/kb/267031/)。

  · 代碼 0 或 0x0:操作成功完成。

  · 代碼 1 或 0x1:調(diào)用的函數(shù)不正確或調(diào)用了未知函數(shù)。

  · 代碼 10 或 0xa:環(huán)境不正確。

  · 代碼 0x8009000f:常規(guī)訪問被拒絕

  Figure 1看到上次運行結果出現(xiàn)非0情況

  這種非〇情況表示的是不能被接受的。

  通過對這個批處理設置斷點,我看到了這樣的報錯信息。

  Figure 2在批處理中加入Pause 進行斷點,查看錯誤信息

  很明顯,這個rsync不是系統(tǒng)自帶的程序和文件,因此無法被系統(tǒng)直接調(diào)用,猜測和環(huán)境變量有關,仔細尋找Windows Server 2008 R2 下面的任務計劃選項,我看到了這個填空的地方。

  Figure 3起始于(可選)項

  我將這個填寫成了該條腳本的所在的目錄,再次運行該任務計劃,得到返回成功的標記,并且在服務本分服務器端受到相應的備份內(nèi)容。

  這里回顧一下,兩個版本操作系統(tǒng)的任務計劃的不一樣,Windows Server 2003 下面可以選擇的內(nèi)容,項目并不多,不過他默認的情況下會將起始于填寫進去,使用的就是所在腳本的上一級目錄。

  Figure 4 Windows Server 2003 下面的起始于,默認被填寫

  因此設置Windows Server 2008 ,2012這樣的基于Nt6核心的系統(tǒng)的任務計劃的時候建議將起始于進行一下設置。

以下是其它網(wǎng)友提供的方法

第二種解決方法:

  1、創(chuàng)建任務計劃時,要在常規(guī)選項卡里選中“不管用戶是否登錄都要運行”、“使用最高權限運行”、配置選帶有“Windows Server 2008 R2”這三個選項,

  2、在操作選項卡里的“起始于(可選)”要填上bat批處理文件所在目錄,windows 2003是在選擇bat批處理文件自動帶上的,而2008不會,雖然它提示是可選的,但是不填的話,執(zhí)行會失敗;

  3、所有信息都填寫完整后點確定時需要輸入運行此任務的用戶帳戶密碼;

第三種解決方法:

  下面我貼一個完整的計劃任務圖示:

  創(chuàng)建計劃任務

  定制計劃任務執(zhí)行時間

  計劃任務操作一(此情況符合單個可執(zhí)行程序或者腳本不調(diào)用數(shù)據(jù)庫情況下)

  計劃任務操作二(此情況符合運行程序需要調(diào)用目錄數(shù)據(jù)庫情況、PS:這個通吃吧貌似j

  后面默認即可

  其問題就在于編輯操作的選項里面的起始于(可選)選項。

  真正問題找出來覺得很諷刺呢

  貼這個帖子是想給大家一個出現(xiàn)問題有據(jù)可查的建議。哈哈,自己也能做個標記以防忘記。

第四種解決方法:

  今天在Windows Server 2008 里新建了一個定時任務,通過定時任務執(zhí)行的bat文件中的sql命令結果查看定時任務的歷史記錄,發(fā)現(xiàn)卡住了提示已經(jīng)啟動定時任務,但是bat中的操作一直沒有執(zhí)行剛開始懷疑bat文件中有錯誤,換成了最簡單的打開記事本的命令notepad,發(fā)現(xiàn)問題依然存在,后來發(fā)現(xiàn)有一個很有意思的地方,新建定時任務的時候,有2個選項:創(chuàng)建基本任務和創(chuàng)建任務之前是創(chuàng)建的基本任務,后來換成創(chuàng)建任務然后,問題就解決了

第五種解決方法:

  新建一個管理員帳號,然后用新帳號運行就可以了。

第六種方法:其實就是第二種方法的補充

  解決辦法:

  如圖:編輯任務 把批處理文件的起始位置加上如:在d:\aa.bat

  那么起始位置就是:d:\ 注:路徑中不能有引號

  下面引用網(wǎng)上的東東:

  批處理文件肯定是沒有問題,加入到計劃任務中,發(fā)現(xiàn)沒能正常備份,也沒有拷貝到網(wǎng)絡映射盤。

  將bat文件輸出到文件,本想看看log的,結果居然沒有正常執(zhí)行。

  google了一下,發(fā)現(xiàn)很多網(wǎng)友都有類似的問題,但沒人給出答案。

  很幸運的找到一篇微軟官方論壇上的網(wǎng)友討論的帖子,幾乎全部解決我的問題。

  http://social.technet.microsoft.com/Forums/en-US/winservermanager/thread/d47d116e-10b9-44f0-9a30-7406c86c2fbe/ 很精彩的技術交流。

  對我來說碰到了2個問題,

  1, a.bat 是處理備份數(shù)據(jù)庫,b.bat 內(nèi)容為 a.bat > D:/abc/1.log , 將b.bat 加入的計劃任務中,目的是想調(diào)試計劃任務是否成功。(手動單獨執(zhí)行,每次都成功的)結果,是1.log不輸出,計劃任務中返回2; www.jb51.net

  2,a.bat 中有把備份好的數(shù)據(jù)拷貝到網(wǎng)絡映射盤,比如Z盤,計劃任務每次都不執(zhí)行,手動運行該腳本也是好的。

  按照上面論壇給的提示:

  2) Make sure that the task is set to "start in" the folder that contains the batch file: open the task properties, click on the "actions" tab, click on the action and then the "edit" button at the bottom. In the "Edit Action" Window there is a field for "start in (optional)" that you set to the path to the batch file.

  在“操作”->"編輯操作"->“起始于(可選)" 中一定要填入該批處理的路徑。 這一招解決了第一個問題。

  NET USE W: /DELETE

  NET USE W: //myserver/myfolder /PERSISTENT:YES

  這個是解決第二個問題的關鍵,在執(zhí)行拷貝,或者建立新文件夾之前,先要進行如上兩行命令。 細節(jié):確保在我的電腦界面通過菜單操作的網(wǎng)絡映射盤式斷開的;Windows server 2008 用戶管理頁面有個網(wǎng)絡密碼管理,如果填寫了,net use w: ... 這行命令就不需要輸入密碼和用戶名。

  這一招解決第二個問題。

  補充一點:批處理文件中和 ”起始于(可選)“中的路徑都不要使用 雙引號""

第七種方法:

  使用windows server 2008 R2 的任務計劃程序需要啟動服務 Task Scheduler 服務,windows server 2008 R2 默認狀態(tài)下Task Scheduler 服務是禁止的并且不可切換啟動類型,

  解決方法:修改注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule 下的start項數(shù)值為2

  修改后重啟服務器,任務計劃程序就可添加使用。

第八種方法:

  網(wǎng)絡環(huán)境:windows2003+windows2008.

  描述:在win2003內(nèi)使用映射驅(qū)動器Z:映射win2008的一個目錄,

  在win2003中創(chuàng)建bat 文件copy Z:中的文件,并做任務計劃bat定時執(zhí)行.

  命令行直接執(zhí)行bat沒有問題,執(zhí)行任務計劃失敗.

  最終的解決方法是參考下面的文章,在bat文件中添加:

  NET USE Z: \\XXX.XXX.XXX.XXX\D$\XXXX "Password" /User:"Administrator"

  ----

  另:win7下映射驅(qū)動器Z:,添加任務計劃執(zhí)行bat文件 Copy Z:\...沒問題,

  不存在需要手工添加命令net use的bug.

  重啟Win7后,任務計劃消失,但其他程序創(chuàng)建的任務計劃存在,

  最后通過排除法檢查發(fā)現(xiàn)是由于360軟件作怪!需要把bat 文件和job文件同時都加入白名單.

任務計劃無法正常運行批處理文件的幾種解決方法

  Windows 任務計劃與 BAT 批處理文件都是我們經(jīng)常使用的工具,一個可以幫助我們定期執(zhí)行計劃的任務、一個可以幫助我們一次執(zhí)行一系列預先編好的命令。在 Windows 系統(tǒng)的維護工作中,我們經(jīng)常需要將任務

  計劃與批處理配合起來使用,即通過設置任務計劃定期執(zhí)行批處理文件定義的一系列命令與操作。

  有時候,我們可能會遇到任務計劃與批處理無法正常協(xié)同工作的情況。例如,一個同樣的批處理文件,我們可能手動運行它時一切正常(說明批處理文件的內(nèi)容沒有錯誤),但將這個批處理文件添加為任務計劃后卻無法按照預期運行。筆者在微軟中文論壇收集了幾種解決任務計劃與批處理無法協(xié)同工作的方法,希望可以幫助大家在遇到類似問題時參考。

  1. 在任務計劃中正確設置執(zhí)行批處理的用戶身份與權限。

  當我們在任務計劃中添加新任務時,其中有一個步驟是指定運行此任務的用戶帳戶,并需要輸入用戶帳戶的密碼進行確認。如果任務計劃設置的用戶帳戶身份或權限,與我們手動運行批處理文件時的用戶帳戶不同,

  就可能會出現(xiàn)以任務計劃方式運行批處理的結果與手動運行同樣的批處理時結果不同的現(xiàn)象。

  例如,假設一個批處理涉及的命令需要管理員權限或者特定用戶帳戶的配置文件才可以正常運行,如果執(zhí)行此批處理的任務計劃被指定為一個非管理員帳戶或不具備相應用戶配置的用戶帳戶,那么此批處理很可能在以任務計劃的方式運行時無法得到其預期的效果。因此,當我們在添加任務計劃并希望以另一個用戶帳戶的身份與權限運行批處理時,一定要在添加新任務向?qū)е袡z查運行批處理的用戶帳戶身份與權限是否滿足運行

  此批處理的要求。

  2. 通過快捷方式為批處理指定起始位置。

  有些批處理文件需要我們?yōu)槠湓O置好特定的“起始位置”才可以正常運行,否則可能會遇到批處理無法找到指定路徑的錯誤。當我們手動執(zhí)行批處理時,無論是在資源管理器中用鼠標雙擊運行批處理,還是首先打開命令提示符窗口、然后再在命令提示符中執(zhí)行批處理,資源管理器當前打開的文件夾位置與命令提示符當前所在的提示符位置都已經(jīng)自動為我們設置好了執(zhí)行批處理時的起始位置。

然而,當我們以任務計劃方式執(zhí)行批處理時,任務計劃卻無法自動指定執(zhí)行批處理時所需的起始位置,這樣也可能會造成以任務計劃方式執(zhí)行批處理時無法得到預期的效果。

  為了解決這一問題,我們可以首先為批處理文件建立一個快捷方式,然后修改快捷方式的屬性,在“常規(guī)”選項卡中設置正確的“起始位置”,接下來我們再添加任務計劃,將新任務指定為這個快捷方式文件而不是批處理本身。這樣,任務計劃會在任務指定的時間自動執(zhí)行指向批處理的快捷方式,對應的批處理在運行時

  就具有正確的起始位置了。

  3. 盡量避免在批處理內(nèi)容中出現(xiàn)過多的引號。

  如果在批處理文件的內(nèi)容里出現(xiàn)了過多的引號,即批處理中有一條或多條命令及參數(shù)被引號擴起來,這不僅可能在編寫批處理命令時容易出錯,而且可能會造成特定版本 Windows 的任務計劃無法正確識別批處理中包含的命令。特別是在一個父級引號中還有子級的引號時,尤其容易出現(xiàn)此類問題。

  根據(jù)微軟知識庫 KB951246 提供的信息,這個問題主要存在于 Windows Vista/Server 2008 系統(tǒng)。

  4. 將批處理文件轉換為可執(zhí)行文件或腳本后再添加任務計劃。

  有時當任務計劃無法正確執(zhí)行批處理文件的部分內(nèi)容時,我們還可以嘗試將批處理轉換為其它格式的可執(zhí)行文件或腳本,然后再添加至任務計劃。轉換格式雖然執(zhí)行的命令與任務不變,但將批處理轉換為可執(zhí)行文件或腳本可以改變?nèi)蝿者\行的順序與方式,有時說不定可以解決問題。

  批處理常見的格式轉換包括將 .BAT 文件轉換為 .EXE 或 .COM 可執(zhí)行文件,或者轉換為 .VBS 腳本,這類轉換可以通過 BAT2EXE、BAT2COM、BAT to EXE Converter、批處理加密轉換器等第三方軟件實現(xiàn)。

  5. 在批處理中添加為正常運行后續(xù)命令所需的先決命令。

  如果我們遇到了一些比較極端的批處理與任務計劃無法協(xié)同工作的問題,無論怎樣在任務計劃的運行環(huán)境中設置都不能解決,那么可以考慮將一些正確完成批處理命令所需的先決命令添加在原批處理內(nèi)容的最前面,在批處理自身的層面加以解決。

  例如,筆者最近在微軟中文論壇見到一則問題:有位用戶編寫了一個備份開發(fā)代碼的批處理,并將其添加為任務計劃,希望在每天凌晨時自動運行。但是,這個批處理涉及的文件備份與復制操作需要訪問 $IPC 網(wǎng)絡映射地址。

經(jīng)測試,用戶編寫的批處理內(nèi)容沒有問題,如果手動運行批處理,可以正確地訪問目標地址并且完成備份;但如果將此批處理添加為任務計劃就無法正確執(zhí)行備份與復制操作。設置任務計劃的用戶權限、設置起始位置、對批處理進行格式轉換等方法均無法解決。最終解決這個問題的方法是在批處理內(nèi)容的前面添加了一條:

  NETUSE Z:\\XXX.XXX.XXX.XXX\D$ "Password" /User:"Administrator"

  將批處理正常訪問映射地址的先決命令寫在原批處理文件內(nèi)容的前面,最終這個批處理文件就可以通過任務

  計劃方式正常運行了。