2012-08-22 100 views
0

我有Java代碼,它啓動WinSCP工具並連接到Unix機器,然後調用位於Unix機器上的xxxx.exe。向WinSCP提供命令

問題是xxxx.exe接受File類型的參數。所以我需要上傳到遠程機器,然後傳遞給xxxx.exe ....這是失敗 ,我試圖儘量避免臨時文件夾。

Process p = Runtime.getRuntime().exec("rTool\\WinSCP.com /script=folder\\code.txt < C:\\FILESTOUPLOADS\\upload1.txt"); 

登錄信息變爲在code.txtWinSCP.com

+1

所以你的問題是什麼? – Stephan

+0

什麼是正確的syntex上傳文件並將其作爲參數傳遞?即 rTool \\ WinSCP.com /script=folder\\code.txt Gerard

+1

如果要搜索將文件傳輸到服務器的好方法, ,而不是調用外部程序? –

回答

1

文件重定向所支持(即,「<」符號)小的代碼的處理我的命令處理器,其Runtime.exec()不使用。正如已經在評論中提到的那樣,首先使用exec的String []版本,以便您不會遇到命令解析問題。其次,您需要調用命令處理器來處理文件重定向(例如,使用「cmd.exe/k」),或者在java中使用handle it yourself

+0

感謝您的答覆..但我仍然希望執行在遠程機器上完成。我仍然需要使用這個外部工具winSCP,因爲它允許我遠程登錄.. – Gerard

+0

jtahlborn:我這樣做是通過Socket傳輸文件之後將文件作爲參數傳遞給服務器的。但我也需要傳遞另一個參數如何在ProcessBuilder的語法將在兩個參數之一是文件,另一個是字符串 – Gerard

+0

@Gerard - 添加更多元素到您的字符串[]? – jtahlborn

0

爲什麼不使用ProcessBuilder從該目錄

公衆的ProcessBuilder目錄(文件目錄)改變工作目錄和文件的設置路徑設置此進程生成器的工作目錄。此對象的start()方法隨後啓動的子進程將使用此作爲其工作目錄。參數可能爲空 - 這意味着將當前Java進程的工作目錄(通常是由系統屬性user.dir指定的目錄)用作子進程的工作目錄。

參數: 目錄 - 新的工作目錄 返回: 此進程生成

+0

這是如何將文件傳送到遠程服務器的? –

相關問題