私はWindowsデスクトップのプログラミングに慣れていないので、Javaから.batファイルを呼び出す方法を理解しようとしています。私はMavenを使ってデスクトップJavaプログラムをjarファイルとして実行しようとしていますが、Citrix仮想化環境でbashスクリプトを実行します。制限付き(Citrix)環境でJavaから.batファイルを呼び出す
最初の問題は、UNCパスがバッチファイルを見つけられなかったが、パスを変更してバッチファイルを見つけることができたが、cmd.exeが私が使用しているCitrixアカウントで、私は何もできないと心配しました。
しくみはこうだ:
1) ユーザーはアップデート
2用program.jarファイルユーザチェックを経てプログラムを起動) 更新が検出されると、新しいjarファイルがprogram_update.jar
と呼ばれるが をダウンロードされ、 run_update.bat
というバッチファイルが メインプログラムディレクトリにコピーされます。 Javaプログラム内から
3) は、次のコマンドが呼び出されます。
FileName.installation
Runtime.getRuntime().exec("cmd /c pushd " + FileName.installation + " && start run_update.bat && popd");
が自宅のインストールディレクトリを示す以前に設定されているプロパティです。
run_update.bat
program.jar
をprogram_update.jar
に置き換えてループを実行し、コマンドプロンプトに成功/失敗のメッセージを表示します。
私はCitrix環境でこれを実行すると、私は次のメッセージが出ます:この時点で
'run_update.bat' is not recognized as an internal or external command, operable program, or batch file.
The command prompt has been disabled by your administrator.
を、私はrun_update.bat
をクリックすることができますし、それが操作を実行します成功しました。
program.jar経由で呼び出される自動アップデートは、cmdにアクセスできる通常のWindows環境で動作します。
私の質問
- はcmd.exeのが無効になっているとき、単純に仕事に行くのではない
cmd /c <commands>
を実行するためにJavaから私の呼び出しですか? - run_update.batをrun_update.cmdに名前を変更しても問題ありませんか?
- 代替技術はありますか? jarファイルが
mv
コマンドで置き換えられるため、バッチファイルはAFAIKに必要です。