アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になっております。

javaのclassを実行する
以下の処理を行うbatファイルを作成したところ
(ディレクトリ移動→classpathの設定→javaコマンド)

cmd.exeよりこのbatファイルを実行すると
正常に動作してくれるのですが

batファイルをダブルクリックすると
javaを正常に実行しません。
errorや例外も特に発生していません。

batファイルを
cmd.exeからの実行するのと
ダブルクリックで実行するのには
何か違いがあるのでしょうか?

最終的な目的はタスクにこのbatを登録し
指定した時間に定期的に実行する事なのですが、

タスクにbatを登録して実行した場合
batをダブルクリックした時と同様の現象になり
正常に動作しませんでした。

原因をご存知の方がいらっしゃいましたら
教えて頂けないでしょうか?

よろしくお願いします。

A 回答 (3件)

僕も#2さまに見習って、ソースコードを書こうかと思います。

バッチプログラミングはかなり勉強したので・・

ソースファイルをhoge.javaとします。作業ディレクトリをC:\Javaとします。
↓のようになります。

cd C:\java
javac hoge.java && java -cp . hoge

バッチプログラミングで「&&」は直前の処理が成功したら(この場合コンパイルエラーがなかったら)、次のコマンドを実行します。ただ、このバッチファイルの短所はjavaコマンドに引数を(String args[])を渡せないことです。。本当はできるんですが、書くと長くなるので・・

ちなみに、>「(ディレクトリ移動→classpathの設定→javaコマンド)」の順番どおりに書くと↓です。

@echo off
cd c:\java
set classpath %CLASSPATH%;.
javac hoge.java && java hoge

最後に、カレントディレクトリまでのパスにスペースがあったらパス自体をダブルクォーテーションで囲ってくださいね。例↓。

cd "C:\Program Files\java"

では、がんばってください。何かの参考になればと思って書かせていただきました。
    • good
    • 1
この回答へのお礼

今回の件とは直接関係ありませんでしたが
勉強になる情報を丁寧に提供していただきありがとうございました。

お礼日時:2006/05/15 17:01

自分の環境で同様のことをする場合、



@echo off
cd aaa\
java -cp . hoge

で、クラスファイルの実行はできます。ただし、実行が終わるとコマンドプロンプトも終了してしまうので、pauseを最後に入れると、何かのキーを入力するまでウィンドウを開いたままにできます。


@echo off
cd aaa\
java -cp . hoge
pause

# hogeはクラスファイルです。
    • good
    • 1
この回答へのお礼

今回の件とは直接関係ありませんでしたが
情報提供していただきありがとうございました。

お礼日時:2006/05/15 17:29

batファイルをダブルクリックした場合、基本的に処理をしたら、すぐにコマンドプロンプトが閉じます。

バッチファイルは本来様々な処理をするためだけのファイルですので、いつまでもコマンドプロンプト(DOSプロンプト)を開いておく必要性はないのです。

ですから、Javaのコンパイルやディレクトリ移動でbatファイルを使う場合、コマンドプロンプトを開いておいて、そこからバッチファイルのあるディレクトリ\バッチファイル名をタイプします。

そうすればお望みの処理ができるはずです。

また、バッチファイルを入れるフォルダを決めておいて、そのフォルダを環境変数PATH(Javaをインストールしたときにも設定しましたね)に設定しておけば、コマンドプロンプトからバッチファイル名だけをタイプすれば良いです。ですから、そうしたほうがJavaだけでなくCやPerlのコマンドを使う際にも便利です。

タスクにbatを登録しても同様な症状が出るのは普通です。余分なタスクは増やさないほうがいいですよ・・

では、がんばってください。

この回答への補足

ご回答ありがとうございます。

本文にも書いた通り

コマンドプロンプトからタイプして実行した場合は
javaのプロセスが正常終了し

BATファイルをダブルクリックした場合で
javaのプロセスが正常に終了しないのです。
(例外やエラーが発生せずスレッドが落ちる。)

なんとか原因が判明し、
BATファイルの文字コードが原因でした。

解りづらい質問をして申し訳ありませんでした。

補足日時:2006/05/15 15:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!