2014-10-10 91 views
0

我正在寫一個Java程序,並將在DOS批處理腳本中調用它....(它是一個基於Swing的GUI應用程序)我希望從調用DOS腳本中的Java程序獲得輸出。我打算通過使用命令行參數進行獲取此信息 - 就像Java - 從程序中獲取輸出...命令行參數?

(在DOS腳本)

的Java MYPROG VAR

如果(VAR%==% 「的loggedIn」) {

}

var應該用myProg的輸出填充。 Java程序myProg應該設置值args [0](在var中),我假設當控制回到DOS腳本時這會被記住。 這可能嗎? 如果不是我怎麼能達到我的用例?我有什麼選擇? 我怎樣才能從myProg傳遞一個標誌(如「已登錄」)到調用DOS批處理腳本?

回答

0

編輯:嘗試使用DOS命令 「管」:

Command1 | Command2 

的輸出(例如:的System.out.println())的Command將命令2 的輸入參數的COMMAND1是命令它運行java應用程序 Command2是將參數處理爲%1的批處理文件,%2

+0

這不是一個問題,在我的Java程序和腳本中,我可以有一個睡眠命令,可以等待var中的值填充(它的值在var中根本不會填充) – user4127664 2014-10-10 02:28:16

+0

這應該可以工作.. ..謝謝...讓我試試 – user4127664 2014-10-10 02:46:35

+0

管道工作。謝謝 – user4127664 2014-10-10 06:40:14

0

命令行參數不能修改;他們是文字。你唯一能做的就是將文本輸出到stdout或者stderr(如yelliver建議的那樣),設置一個環境變量,寫入某種類型的日誌文件,或者返回一個退出代碼。

+0

...退出代碼.. 這爲我做了詭計。謝謝。 我只想將一個標誌(指示符)傳遞給調用批處理腳本,所以這起作用 – user4127664 2014-10-10 03:25:11

+0

我需要這個標誌在Java程序運行時傳遞出去(到DOS腳本),因此不用退出代碼,管道|證明了我的合適選擇。 我在myProg中有一個System.out.print(「mystring」)語句 then java myProg |找到「mystring」 echo「errorlevel」 echo指示是否在輸出中找到該字符串。 謝謝大家 – user4127664 2014-10-10 06:36:30

0

爲「從MYPROG輸出填充VAR」的方式是這樣的(在DOS腳本):

for /F "delims=" %%a in ('java myProg') do set "var=%%a" 

注意,Java程序必須「輸出」你想要的值分配給無功,也就是說,它必須在屏幕上顯示該值(通過Stdout)。