1
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException, StringIndexOutOfBoundsException
    {
        Runtime.getRuntime().exec("cmd /c start C:\\dig-files3\\query3.bat");
    }
}

Javaプログラムを介してバッチファイルを起動しようとしていますが、cmd画面に「内部または外部コマンドとして認識されないdig...」というメッセージが表示されます。ただし、ウィンドウでバッチファイルをダブルクリックすると、正常に実行されます。どうすればこれを修正できますか?バッチファイルの内容は次のとおりです。

SET /a VAR=0 
:HOME 
SET /a VAR=VAR+1 

IF %VAR%==200000 goto :End 

 dig @10.3.1.166 6.4.0.3.5.5.5.9.9.9.com. naptr
goto :HOME 

:END
4

4 に答える 4

1

You should create a file object for the working directory to prevent problems with whitespaces in the path and then use that object to start the batch script:

File workdir = new File("C:\\dig-files3");
Runtime.getRuntime().exec("query3.bat", null, workdir);

There's also a flaw in your batch script: You probably want to write SET /a VAR=%VAR%+1 so that %VAR% gets evaluated before incrementing it.

于 2013-02-05T10:56:25.627 に答える
1

これは、「dig」が PATH 変数に追加されていないために発生している可能性があります。新しいターミナル ウィンドウを開いて「dig」と入力してみてください。おそらく同じエラーが表示されます。[コントロール パネル] -> [システム] -> [システムのプロパティ] -> [詳細オプション] タブ -> [環境変数] に移動する必要があります。

そこで PATH 変数を検索し、最後に (最後のコマンドに ";" を追加した後に) "dig" 実行可能ファイルへのフル パスを追加する必要があります (実行可能ファイル自体を除く (c:\foo\bar など))。その後、もう一度やり直してください。この環境変数は、Windows に、実行しようとしている実行可能ファイルについて、そこに含まれるパスのリストを調べるように指示します。

もう 1 つの解決策は、コンパイル済みの Java ファイルを dig 実行可能ファイルがある場所にコピーし、そこから実行することです。

于 2013-02-04T17:16:49.580 に答える
0

問題は、システム PATH 変数にバッチ ファイルがないことです。バッチ ファイルへのパスをシステム PATH に挿入すると、正常に動作するはずです。

于 2013-02-04T17:13:28.890 に答える
0

わかりました、これを修正する別の方法があるかもしれませんが、これが私がやった方法です。私は Eclipse を使用しており、dig アプリケーションをプロジェクト ディレクトリ C:\User\username\workspace\projectName にコピーしました。

于 2013-02-06T21:24:33.413 に答える