2


我有一個DOS批處理文件每天運行。
類似的東西一樣 -作爲計劃任務與批處理混淆問題

@ECHO ON 
SET COMMON_LIB=commons-io-1.3.1.jar; 
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating 

PAUSE 

當我直接運行該批處理文件,即在.bat文件雙cliking,它運行良好,命令窗口打開並執行所有需要的命令(注意PAUSE) 。
但是當我安排每日任務時,我將狀態看作Running。另外,當我右鍵點擊任務時,它給了我一個選項來結束任務(當狀態是Running),但是我不能看到命令窗口,所以我不能確定它是否已經被處理或者它產生了錯誤。
所以,不能理解錯誤是在classpath還是我的java代碼或其他地方。

環境是Windows Server 2003 R2 EE,SP2。該用戶具有管理員權限。
我查過了,但是在WINDOWS\Tasks dir中沒有Schedlgu.txt的文件。
我注意到的一件事是CLASSPATH值沒有提及jdk/bin,這可能是一個問題嗎? 請指教。

編輯

只是把事情簡單化,我評論了java命令的bat文件做幾乎沒有再設置一些變量,然後暫停以保持窗口打開。仍然沒有成功。

+0

我不明白你的問題是什麼。你的任務失敗了嗎?某處有錯誤嗎? – Gabe 2011-01-06 13:46:23

+0

同樣在這裏,即使我不明白任務是否失敗。這就是問題,我沒有看到任何地方的錯誤,這使得它更加困難。 – 2011-01-06 13:53:22

回答

0

那麼,經過一些試驗和錯誤,我終於能夠讓我的計劃任務運行。
正如Dave所建議的那樣,我將std out重定向到了一個文本文件,以便我可以看到生成了哪些錯誤。但文本文件空白,任務運行。
所以我增加了一個java -version

@ECHO ON 

SET COMMON_LIB=commons-io-1.3.1.jar; 
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

java -version 

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating 

,仍然沒有結果,即使是現在的文本文件是空白的。

然後,我創建了一個簡單HelloWorld程序,並將此java命令的bat文件

@ECHO ON 

SET COMMON_LIB=commons-io-1.3.1.jar; 
SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

java -version 

java HelloWorld > C:\ChechHW.txt 

java -cp %AR_CLASS_PATH% -Xms128m -Xmx256m FileCreating 

的CheckHW.txt有輸出文本,我曾在HelloWorld程序給出。

所以現在所有這些增加了困惑和煩惱。

有趣而令人驚訝的是,這個問題是我用來設置類路徑的CLASSPATH變量,它使用java命令。
我不知道如何和爲什麼重要的它開始工作後,我從

SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

在我的問題BAT文件除去%CLASSPATH%和工作在Windows XP系統上沒有這個變化。
我想知道一些有關的設置Java類路徑的Windows 2003 Server上並沒有允許它來處理。

0

計劃任務不一定打開可見窗口。

根據我的經驗,如果在計劃任務啓動時有相關用戶的活動桌面會話,那麼它通常會在該會話中創建一個窗口。如果有多個這樣的會話,它將選擇其中的一個,但我不確定如何做出選擇。如果沒有這樣的活動會話,則根本不會創建窗口。

似乎最有可能的是,作業正在運行,然後停在PAUSE命令上,沒有辦法接收使其繼續的輸入。這很難驗證,因爲PAUSE是一個內部命令,並不會在任務管理器或Process Explorer中顯示爲單獨的進程。但是,如果您可以驗證沒有Java進程正在運行,這將支持相信批處理的java部分已完成並且它停留在暫停狀態。

通常,將批處理文件作爲計劃任務運行時,將標準輸出和標準錯誤重定向到文件是明智的做法,以便在作業完成後查找錯誤。

相關問題