2012-05-03 93 views
0

當我運行命令行下面的命令,我可以運行的7-Zip作爲遠程用戶,並提取一個文件到網絡共享:啓動一個啓動另一個命令行應用程序從不響應一個命令行應用程序

C:\PsExec.exe -u username -p password "C:\7z.exe" x -y -o\\network\extractedfiles\ C:\compressed.zip toextract.txt 

我正在運行此生成的行,正如我的應用程序正在運行它(請注意我已更改目錄,路徑,用戶名和密碼,以便我可以在網上發佈它)。實際上,該行是從我的應用程序日誌中複製的。

但由於某些原因,當我使用下面的代碼從Java運行此命令時,它會一直等待。 「\ network \ extractedfiles \」路徑中沒有文件出現。

final Process copyFile = Runtime.getRuntime().exec(cmd); 
final int exit = copyFile.waitFor(); 

其中cmd是上面的字符串。有任何想法嗎?

更多信息1:

我也想說的是,當這是由命令行運行我注意到,PSEXEC推出Z-ZIP在一個單獨的命令窗口。難道問題是來自zip的輸出沒有被處理掉?我試圖關閉輸入流,但它似乎沒有解決我面臨的問題。

更多信息2:

我試圖從命令註銷輸出,這裏是我得到了什麼:

INFO 2012-05-03 15:07:55,188 - Command output: PsExec v1.98 - Execute processes remotely 
INFO 2012-05-03 15:07:55,188 - Command output: Copyright (C) 2001-2010 Mark Russinovich 
INFO 2012-05-03 15:07:55,188 - Command output: Sysinternals - www.sysinternals.com 
INFO 2012-05-03 15:07:55,188 - Command output: 

然後坐在永遠。當在命令行上運行時,下一行輸出是:

C:\7z.exe exited with error code 0. 

所以看起來7-zip是懸掛的。它甚至沒有開始提取文件,雖然 - 當我檢查文件預計將提取到什麼目錄出現。

更多信息3:

我使用ionic.zip.dll創建了自己的unzipper在.NET。我的解壓器非常簡單 - 通過命令行接受的參數,沒有任何輸出。但它仍然做了完全相同的事情 - 解壓縮不會啓動並且執行掛起。也許psexec正在做一些奇怪的事情? psexec是否希望在外部命令控制檯中運行解壓縮程序會導致Java出現任何問題?

+0

您需要讀取進程的輸出流,否則將永遠掛起。這裏有幾個問題解釋如何做到這一點。 –

+0

@EricPetroelje在inputstream,outputstream和errorstream對象中有一個名爲close的函數。足以「關閉」溪流嗎?我試過這個,但沒有解決問題。看到我的問題中的修正案。 – JSideris

+0

@EricPetroelje閱讀應用程序的輸出沒有幫助。請參閱「更多信息2」。 – JSideris

回答

0

大概有一個錯誤,你應該閱讀從工藝流肯定知道

+0

我讀了輸出,沒有錯誤。它只是掛起。我爲我的問題添加了一些額外的信息。 – JSideris

0

正如更新;我嘗試創建自己的解壓器,psexec,甚至使用C#.net創建自己的解壓器,psexec,甚至是我自己的命令行包裝器(不希望重製整個應用程序),兩個自定義應用程序都沒有任何輸出,並且我正在運行的命令每次從一個作爲外部用戶運行的cmd窗口中運行。但是,從Java開始,它只工作過一次,然後解壓縮器第二次凍結,再也沒有工作過。似乎是防病毒或防火牆問題。不幸的是,它現在不在我的手中,IT部門目前正在幫助我們實現這個目標,我一直在等待他們的迴應。

相關問題