0

我有启动 WinSCP 工具进程并连接到 Unix 机器然后调用位于 Unix 机器上的 xxxx.exe 的 Java 代码。

问题是 xxxx.exe 接受 File 类型的参数。所以我需要将它上传到远程机器,然后传递给 xxxx.exe.... 这是失败的,我试图尽可能避免临时文件夹。

小码

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

登录信息code.txt按以下方式输入WinSCP.com

4

2 回答 2

1

文件重定向(即“<”符号)由Runtime.exec()不使用的命令处理器处理。正如评论中已经提到的,首先使用 exec 的 String[] 版本,这样您就不会遇到命令解析问题。其次,您需要调用命令处理器来处理文件重定向(例如使用“cmd.exe /k”),或者在java 中自己处理。

于 2012-08-22T14:52:10.407 回答
0

为什么不使用ProcessBuilder 更改工作目录并从该目录设置文件的路径

public ProcessBuilder directory(文件目录)设置此流程构建器的工作目录。随后由该对象的 start() 方法启动的子进程将使用它作为其工作目录。参数可以为null——表示使用当前Java进程的工作目录,通常是系统属性user.dir命名的目录,作为子进程的工作目录。

参数:directory - 新的工作目录返回:此流程构建器

于 2012-08-22T14:54:45.687 回答