2011-01-07 16 views
1

執行批處理文件,我調用使用此無法用java

rt.exec(new String[]{"cmd.exe","/C","start", "/MIN","build.bat"}); 

此行的build.bat文件後,關閉命令提示符打開命令提示符。構建成功,但窗口仍然打開。 如何關閉它? 嘗試銷燬進程和其他System.ext方法。沒有用

回答

2

你不應該在你的論點中使用start /MIN。你試過這個嗎?

rt.exec(new String[]{"cmd.exe","/C","build.bat"}); 
+0

我試過了。使用此選項不會執行構建。 –

+0

嗯,有趣。如果是這樣的話,我懷疑這是你的bat文件。 'START'基本上會產生一個新的cmd.exe進程(不會退出的進程),'/ C'會退出你產生的進程。您可以嘗試在批處理文件中添加一些日誌記錄,並查看它到底有多遠。 –

1

在bat文件的末尾添加exit,也無需添加cmd未來可以直接執行蝙蝠

+0

我嘗試在bat文件的末尾添加exit。沒有幫助。我如何在不使用'cmd'選項的情況下調用bat文件。 –

+0

只是直接'rt.exec(新的String [] { 「C:\\路徑\\的build.bat」});' –

+0

@JigarJoshi我的批處理文件doensn't關閉命令提示窗口時java應用拋出exception.I有最後加入退出。 – happy

-1

只需更新批處理(.bat)用一個新行文件和新輸入行:exit

+0

已經建議。在發佈之前閱讀之前的回答和評論。 – Avik

1
writer.write("expdp greenbuds/greenbuds directory=backup dumpfile="+dd+".dump logfile="+dd+".log"); 
writer.newLine(); 
writer.write("Exit"); 
+0

歡迎來到Stack Overflow!你會考慮增加一些敘述來解釋爲什麼這段代碼有效嗎?是什麼使它成爲這個問題的答案?這對詢問問題的人以及任何其他人來說非常有幫助。 –

0

這是一個fix I found on StackOverflow,用於在使用批處理文件執行程序後關閉命令提示符。

相反的:啓動 「一些程序路徑」

做到這一點:啓動 「」 「一些程序路徑」 在Windows XP下

爲我工作。

1

我剛開始在這裏的SO,所以無法給予好評@Franci佩諾夫的答案是正確的:

rt.exec(new String[]{"cmd.exe","/C","build.bat"}); 

或簡單地說,

rt.exec("cmd.exe /C build.bat"); 

不應該打開命令提示符。 build.bat將無頭執行。


假設你想打開一個命令提示符,而build.bat是運行(這樣你就可以看到正確的從命令提示符,而不是稍後處理它的輸出),並希望在命令提示符build.bat後消失已經完成執行,則可以使用以下:

rt.exec("cmd.exe /C start cmd.exe /C batch.bat"); 

start啓動(可見的)命令提示符窗口處理和顯示的cmd.exe /C batch.bat輸出。如果在batch.bat的末尾有pause,那麼只需按下一個鍵,命令提示符就會消失,無需在提示窗口鍵入exit以關閉它。

這可能不是你所需要的,但我一直在搜索,但後來發現自己的解決方案。只是爲了分享它。

+1

非常感謝你!在20個選項卡打開並工作幾小時後,您的答案的第二部分就是我需要的解決方案!非常感謝!! – Hamsterrific