您好,登錄后才能下訂單哦!
最近遇見一個奇怪的現象,在做某系統的定期備份的時候使用到了非系統自帶Rsync命令,但是手動啟動沒問題,而且又非常期望批量化在多臺主機上進行,怎么辦呢?Windows Server 2003下面這樣執行任務計劃沒問題,而就Windows Server 2008 R2下面出現意外。
正常情況下我們的任務計劃會有反饋數值,通過它可以判斷這個任務計劃上次是否運行正常(詳細連接:http://support.microsoft.com/kb/267031/)。
· 代碼 0 或 0x0:操作成功完成。
· 代碼 1 或 0x1:調用的函數不正確或調用了未知函數。
· 代碼 10 或 0xa:環境不正確。
· 代碼 0x8009000f:常規訪問被拒絕
Figure 1看到上次運行結果出現非0情況
這種非〇情況表示的是不能被接受的。
通過對這個批處理設置斷點,我看到了這樣的報錯信息。
Figure 2在批處理中加入Pause 進行斷點,查看錯誤信息
很明顯,這個rsync不是系統自帶的程序和文件,因此無法被系統直接調用,猜測和環境變量有關,仔細尋找Windows Server 2008 R2 下面的任務計劃選項,我看到了這個填空的地方。
Figure 3起始于(可選)項
我將這個填寫成了該條腳本的所在的目錄,再次運行該任務計劃,得到返回成功的標記,并且在服務本分服務器端受到相應的備份內容。
這里回顧一下,兩個版本操作系統的任務計劃的不一樣,Windows Server 2003 下面可以選擇的內容,項目并不多,不過他默認的情況下會將起始于填寫進去,使用的就是所在腳本的上一級目錄。
Figure 4 Windows Server 2003 下面的起始于,默認被填寫
因此設置Windows Server 2008 ,2012這樣的基于Nt6核心的系統的任務計劃的時候建議將起始于進行一下設置。
以下是其它網友提供的方法
第二種解決方法:
1、創建任務計劃時,要在常規選項卡里選中“不管用戶是否登錄都要運行”、“使用最高權限運行”、配置選帶有“Windows Server 2008 R2”這三個選項,
2、在操作選項卡里的“起始于(可選)”要填上bat批處理文件所在目錄,windows 2003是在選擇bat批處理文件自動帶上的,而2008不會,雖然它提示是可選的,但是不填的話,執行會失敗;
3、所有信息都填寫完整后點確定時需要輸入運行此任務的用戶帳戶密碼;
第三種解決方法:
下面我貼一個完整的計劃任務圖示:
創建計劃任務
定制計劃任務執行時間
計劃任務操作一(此情況符合單個可執行程序或者腳本不調用數據庫情況下)
計劃任務操作二(此情況符合運行程序需要調用目錄數據庫情況、PS:這個通吃吧貌似j
后面默認即可
其問題就在于編輯操作的選項里面的起始于(可選)選項。
真正問題找出來覺得很諷刺呢
貼這個帖子是想給大家一個出現問題有據可查的建議。哈哈,自己也能做個標記以防忘記。
第四種解決方法:
今天在Windows Server 2008 里新建了一個定時任務,通過定時任務執行的bat文件中的sql命令
結果查看定時任務的歷史記錄,發現卡住了
提示已經啟動定時任務,但是bat中的操作一直沒有執行
剛開始懷疑bat文件中有錯誤,換成了最簡單的打開記事本的命令notepad,發現問題依然存在
后來發現有一個很有意思的地方,新建定時任務的時候,有2個選項:創建基本任務和創建任務
之前是創建的基本任務,后來換成創建任務
然后,問題就解決了
第五種解決方法:
新建一個管理員帳號,然后用新帳號運行就可以了。
第六種方法:其實就是第二種方法的補充
解決辦法:
如圖:編輯任務 把批處理文件的起始位置加上如:在d:\aa.bat
那么起始位置就是:d:\ 注:路徑中不能有引號
下面引用網上的東東:
批處理文件肯定是沒有問題,加入到計劃任務中,發現沒能正常備份,也沒有拷貝到網絡映射盤。
將bat文件輸出到文件,本想看看log的,結果居然沒有正常執行。
google了一下,發現很多網友都有類似的問題,但沒人給出答案。
很幸運的找到一篇微軟官方論壇上的網友討論的帖子,幾乎全部解決我的問題。
http://social.technet.microsoft.com/Forums/en-US/winservermanager/thread/d47d116e-10b9-44f0-9a30-7406c86c2fbe/ 很精彩的技術交流。
對我來說碰到了2個問題,
1, a.bat 是處理備份數據庫,b.bat 內容為 a.bat > D:/abc/1.log , 將b.bat 加入的計劃任務中,目的是想調試計劃任務是否成功。(手動單獨執行,每次都成功的)結果,是1.log不輸出,計劃任務中返回2; www.jb51.net
2,a.bat 中有把備份好的數據拷貝到網絡映射盤,比如Z盤,計劃任務每次都不執行,手動運行該腳本也是好的。
按照上面論壇給的提示:
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
這個是解決第二個問題的關鍵,在執行拷貝,或者建立新文件夾之前,先要進行如上兩行命令。 細節:確保在我的電腦界面通過菜單操作的網絡映射盤式斷開的;Windows server 2008 用戶管理頁面有個網絡密碼管理,如果填寫了,net use w: ... 這行命令就不需要輸入密碼和用戶名。
這一招解決第二個問題。
補充一點:批處理文件中和 ”起始于(可選)“中的路徑都不要使用 雙引號""
第七種方法:
使用windows server 2008 R2 的任務計劃程序需要啟動服務 Task Scheduler 服務,
windows server 2008 R2 默認狀態下Task Scheduler 服務是禁止的并且不可切換啟動類型,
解決方法:修改注冊表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule 下的start項數值為2
修改后重啟服務器,任務計劃程序就可添加使用。
第八種方法:
網絡環境:windows2003+windows2008.
描述:在win2003內使用映射驅動器Z:映射win2008的一個目錄,
在win2003中創建bat 文件copy Z:中的文件,并做任務計劃bat定時執行.
命令行直接執行bat沒有問題,執行任務計劃失敗.
最終的解決方法是參考下面的文章,在bat文件中添加:
NET USE Z: \\XXX.XXX.XXX.XXX\D$\XXXX "Password" /User:"Administrator"
----
另:win7下映射驅動器Z:,添加任務計劃執行bat文件 Copy Z:\...沒問題,
不存在需要手工添加命令net use的bug.
重啟Win7后,任務計劃消失,但其他程序創建的任務計劃存在,
最后通過排除法檢查發現是由于360軟件作怪!需要把bat 文件和job文件同時都加入白名單.
任務計劃無法正常運行批處理文件的幾種解決方法
Windows 任務計劃與 BAT 批處理文件都是我們經常使用的工具,一個可以幫助我們定期執行計劃的任務、
NET USE Z:\\XXX.XXX.XXX.XXX\D$ "Password" /User:"Administrator"
將批處理正常訪問映射地址的先決命令寫在原批處理文件內容的前面,最終這個批處理文件就可以通過任務
計劃方式正常運行了。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。