我有Java Code启动WinSCP工具的过程并连接到Unix机器,然后调用位于Unix机器上的xxxx.exe。
问题是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
答案 0 :(得分:1)
文件重定向(即“&lt;”符号)由命令处理器处理,Runtime.exec()
不使用。正如已经在注释中提到的那样,首先使用exec的String []版本,这样就不会遇到命令解析问题。第二,你需要调用命令处理器来处理文件重定向(例如使用“cmd.exe / k”)或java中的handle it yourself。
答案 1 :(得分:0)
为什么不使用ProcessBuilder
来更改工作目录并从该目录设置文件的路径
public ProcessBuilder目录(文件目录)设置此进程构建器的工作目录。随后由此对象的start()方法启动的子进程将使用此作为其工作目录。参数可以为null - 这意味着使用当前Java进程的工作目录(通常是系统属性user.dir命名的目录)作为子进程的工作目录。
参数: directory - 新的工作目录 返回: 此流程构建器