1

Runetime.exec(String)Java関数を使用して、Windows 7コンピューターのスタートアップフォルダーでプログラムを次のように実行しようとしています:

Runtime.getRuntime().exec(runner.getPath() + "\\run.bat");

これを実行すると、コマンドを実行できないというエラーが表示されます。

Exception in thread "main" java.io.IOException: Cannot run program ""C:\Users\ly
ndsey\AppData\Roaming\Microsoft\Windows\Start": CreateProcess error=2, The syste
m cannot find the file specified

ご覧のとおり、ファイル名は「\Windows\Startup\run.bat」に続くはずの「\Windows\Start」で途切れています。使用できる代替手段はありますか?

4

4 に答える 4

1

runnerFile インスタンスとして考えると、これは機能するはずです。

Desktop.getDesktop().open(new File(runner, "run.bat"));

Desktopの代わりにクラスを使用するため、 (ランナー)をその表現Runtimeに変換する必要はありません(エラーが発生しやすい)。ランナーは、実行したい「run.bat」の親ディレクトリとして「そのまま」使用されます。FileString

クラスのその他の利点Desktop: 必要なファイルを開くことができるようになりました。

于 2013-08-22T13:25:58.910 に答える
1

あなたが与えたエラーからわかるように、過去のコピーであることを願っていますがrunner.getPath()、何らかの理由で「\」で始まり、パス全体が無効になる文字列です。それを確認し、必要に応じて削除してください

すでにファイルがあり、そのパスが必要な場合は、使用できます

runner.getAbsolutePath()

また、runner がファイルのgetPath場合、パスを含むファイル パスが表示されるため、コードは確実に機能しません。代わりに次を使用します。

String path = runner.getPath();
path = path.substring(0, path.lastIndexOf("\\")) + "\\run.bat";
Runtime.getRuntime().exec(path);
于 2013-08-22T12:53:22.337 に答える