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の場合)が表示されますが、コマンドウィンドウが表示されないため、処理されていないか、生成されたエラーが発生します。
エラーがクラスパスか私のJavaコードか他のどこかにあるかどうかはわかりません。

環境はWindows Server 2003 R2 EE、SP2です。ユーザーには管理者特権があります。
私はチェックしましたが、WINDOWS\TasksディレクトリにSchedlgu.txtのファイルがありません。
私が気づいたことの1つは、CLASSPATHの値がjdk/binへの参照を持たないということでした。 お知らせください。

EDIT

だけで物事を単純化するために、私はいくつかの変数を設定して、開いているウィンドウを維持するために一時停止し、その後はほとんど何もしないようにバットファイルのjavaコマンドをコメントしました。まだ成功していない。

+0

あなたの問題は何か分かりません。あなたの仕事は失敗ですか?どこかでエラーがありますか? – Gabe

+0

ここでも同じですが、タスクが失敗しているかどうかわかりません。それはそれほど難しくありませんどこにでもエラーが表示されない問題はそれはそうです。 –

答えて

0

さて、試行錯誤の末、私は最終的に私のスケジュールされたタスクを実行することができました。
Daveが提案したように、stdはテキストファイルにリダイレクトされていたので、どのようなエラーが生成されているのか分かりました。しかし、テキストファイルが空白になり、タスクが実行されました。
だから私は今でも、テキストファイルが空白だった、まだ結果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プログラムを作成し、CheckHW.txtは私がHelloWorldプログラムに与えていた、出力テキストを持っていた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 

に、このjavaコマンドを追加しました。

これですべてが混乱と煩わしさに加わりました。

驚くべきことに、私がjavaコマンドでクラスパスを設定するために使用している変数は、CLASSPATHです。
私はそれは私が私の質問でbatファイルだったと、この変更せずにWindows XPシステムに取り組んでいる

SET AR_CLASS_PATH=%CLASSPATH%%COMMON_LIB% 

から %CLASSPATH%を取り除いた後、作業を​​開始し、なぜ重要なのかを知っているといけません。
Javaクラスパスに関連するWindows 2003 Serverの設定によっては、処理が許可されていないのだろうかと思います。

0

スケジュールされたタスクは必ずしも可視ウィンドウを開くとは限りません。

私の経験では、スケジュールされたタスクが開始される時点で関連するユーザーのアクティブなデスクトップセッションがある場合、通常はそのセッションでウィンドウが作成されます。そのようなセッションが複数ある場合、それらのセッションの1つが選択されますが、その選択方法はわかりません。このようなアクティブなセッションがない場合、ウィンドウはまったく作成されません。

ジョブが実行中で、PAUSEコマンドで停止している可能性が高くなります。入力を受け付け続けることはできません。 PAUSEは内部コマンドであり、タスクマネージャまたはプロセスエクスプローラでは別のプロセスとして表示されないため、これを確認するのは困難です。しかし、実行中のJavaプロセスがないことを確認できれば、バッチのJava部分が完了し、PAUSEに固執しているという信念を裏付けます。

一般的に、スケジュールされたタスクとしてバッチファイルを実行する場合、標準出力と標準エラーの両方をファイルにリダイレクトして、ジョブの完了後にエラーを探すことができます。

+0

説明をありがとう、私はまだ完全には確信していません。私はWindows XPで同じことを試みましたが、それはまったく問題ありませんでした。スケジュールされたタスクはコンソールを開き、PAUSEコマンドで一時停止しました。あなたは熟考してもいい点があります。私はまた、標準出力のリダイレクトを試みます。 –

+0

Daveさんにありがとうございました。 –

+0

私はPAUSEを使うのではなく、それを追加します。 'start/WAIT java ...' - Javaのコマンドを実行すると、javaプログラムが終了するまでコマンドシェルが待機するはずです。スケジューリングされたタスクとして実行しているときは、「ダングリング」プロセスが残ってはいけません。 – icabod

関連する問題