2012-08-22 35 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

这是如何将文件传送到远程服务器的? –

相关问题