こんにちは私は、BATファイルとshファイルの両方で実行できるJARファイルを持っています。 JAR内では、JARがbatファイルかshファイルのどちらで実行されたかを追跡する変数フラグが必要です。 stackoverflowの周りを見たが、同様のトピックを見つけることができませんでした。それは可能ですか?ありがとう。JARファイルがJAVAのshスクリプトまたはbatスクリプトによって実行されているかどうかを確認する方法
0
A
答えて
0
これは問題ではありません。あなたがバットやシュートで環境変数を設定する(あなたのjarが始まる直前)、それは他のserviseが同じ名前のveriableを設定することはありそうにないので、非常に具体的です(あるいは変数の特定の値を考える)。あなたのコードでは、あなたのコードがどこから始まったのかを検出できるように変数を読んでください。
詳細をチェックアウトhere。
0
は、Javaの親プロセスを取得し、it.The最も簡単な方法は、(それが窓からデフォルトでインストールされる7/Server 2008の)PowerShellを使用しているチェックする必要があります:
public static void main(String[] args){
if (System.getProperty("os.name").toLowerCase().contains("windows")){
String pid=ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
System.out.println(pid);
String pscommand="powershell $pp=(gwmi win32_process|Where-Object {$_.ProcessId -eq "+pid+"}).ParentProcessId;(gwmi win32_process |Where-Object {$_.ProcessId -eq $pp}).Caption";
Process powerShellProcess;
int exitCode=0;
String shell="";
try {
powerShellProcess = Runtime.getRuntime().exec(pscommand);
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(powerShellProcess.getInputStream()));
//BufferedReader stdError = new BufferedReader(new
// InputStreamReader(powerShellProcess.getErrorStream()));
String s = stdInput.readLine();
System.out.println(s);
if(s.toLowerCase().equals("cmd.exe")){
System.out.println("called from batch or cmd.exe directly");
} else if (s.toLowerCase().equals("bash.exe")){
System.out.println("called from bash.exe or .sh script");
} else {
System.out.println("called from smething else");
}
powerShellProcess.getOutputStream().close();
powerShellProcess.getInputStream().close();
powerShellProcess.getErrorStream().close();
exitCode=powerShellProcess.waitFor();
System.out.println("Exit code from getting shell type: "+exitCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}
関連する問題
- 1. プロセスが実行されているかどうかを確認するpowershellスクリプト
- 2. rubyスクリプトが既に実行されているかどうかを確認
- 3. スクリプトがdofile()でインクルードされているかどうか、またはLuaで直接実行されているかどうかを確認する方法は?
- 4. virtualenvで実行されているスクリプトがグローバルPythonにアクセスするかどうかを確認する方法
- 5. PHPスクリプトがすでに実行されているかどうかを確認する方法
- 6. スクリプトがPowerShell ISEによって実行されているかどうかを確認する方法はありますか?
- 7. Pythonスクリプトから.shファイルを実行していますか?
- 8. ターミナルから.shまたは.batファイルを実行するにはどうすればよいですか?
- 9. MS SQL ServerでSQLスクリプトが正常に実行されたかどうかを確認する方法は?
- 10. 特定のマシンでスクリプトが既に実行されているかどうかを確認しますか?
- 11. サービスコントロールマネージャーによってプロセスが実行されているかどうかを確認する方法
- 12. jarファイルがapkにコンパイルされているかどうかを確認する方法はありますか?
- 13. スクリプトが5分ごとに実行されているかどうかを確認するには、
- 14. スクリプト(.shまたは.bat)を起動するにはどうすればよいですか?
- 15. スクリプトがtty上で実行されているかどうかを確認するには?
- 16. プロセスが実行中かどうかを確認するLinuxスクリプト
- 17. pythonスクリプトが正しく実行されているかどうか、再実行されていないかどうかを確認します。
- 18. PHPスクリプトがcron経由で別のスクリプトから実行されているか確認してください
- 19. stdinから読み込まれたshによって実行されるスクリプトに引数を渡すにはどうすればよいですか?
- 20. .shスクリプトでJava jarをベンチマークする
- 21. zipファイルが壊れているかどうかを確認するPythonスクリプト
- 22. スクリプトが実行されている場所を確認
- 23. スクリプトがスーパーユーザーとして実行されているかどうかを確認するにはどうすればよいですか?
- 24. ディレクトリが共有されているかどうかを確認するPowerShellスクリプト?
- 25. Pythonがインストールされているかどうかを確認するPowershellスクリプト
- 26. batまたはcmdを使用してプログラムが現在のユーザーとして実行されているかどうかを確認する方法
- 27. .csファイルをスクリプトとして実行して、.batファイルを書き込まないようにするにはどうすればよいですか?
- 28. スクリプトがRStudioノートブック内で実行されているかどうかを確認する
- 29. ディレクトリがBATスクリプトで書き込み可能かどうかを確認する最も良い方法は?
- 30. Process.Start()を使用してCodedUIスクリプトから.batファイルまたはexeファイルを実行する方法
私はあなたがしたいとしますWindowsマシンでこれをチェックしますか? UNIX上では 'bat'を実行することはできません(UNIXではbash以外のシェルもあります)。 – npocmaka
実行中のスクリプトの種類だけを使用しているマシンは関係ありません。 Windows用のバットとsh、Linux用のshです。 – olliejjc16
プラットフォームによって異なります。 Windowsはbatファイルをサポートしています。 UNIXとフレンドはshファイルをサポートしています。アプリケーションとの違いは何ですか? – EJP