【问题标题】:Feeding commands to WinSCP向 WinSCP 提供命令
【发布时间】:2012-08-22 14:41:24
【问题描述】:

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

问题是 xxxx.exe 接受文件类型的参数。所以我需要把它上传到远程机器,然后传递给 xxxx.exe.... 那是失败的 我尽量避免使用临时文件夹。

小码

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

登录信息进入code.txt,由WinSCP.com支持

【问题讨论】:

  • 上传文件并将其作为参数传递的正确语法是什么?即在 rTool\\WinSCP.com /script=folder\\code.txt
  • 寻找一种将文件传输到服务器而不是调用外部程序的好方法不是更有趣吗?
  • .exe 在 linux 机器上??
  • Runtime.exec() 的单行调用很少起作用。遵循从Runtime.exec info. page 链接的文章的建议,然后再想知道它为什么会中断。此外,使用 ProcessBuilder 表示 1.5+,并将参数分解为 String[]

标签: java runtime.exec winscp


【解决方案1】:

文件重定向(即“Runtime.exec() 不使用的命令处理器处理。如 cmets 中所述,首先使用 exec 的 String[] 版本,这样您就不会遇到命令解析问题。其次,您需要调用命令处理器来处理文件重定向(例如使用“cmd.exe /k”),或者在 java 中使用handle it yourself

【讨论】:

  • 感谢您的回复.. 但我仍然希望在远程机器上执行。我仍然需要使用这个外部工具 winSCP,因为它允许我远程登录..
  • jtahlborn:我已经这样做了,它可以在通过 Socket 传输文件后将文件作为参数传递。但我还需要传递另一个参数 ProcessBuilder 的语法将如何在两个参数中,其中一个是文件,另一个是字符串
  • @Gerard - 向您的 String[] 添加更多元素?
【解决方案2】:

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

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

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

【讨论】:

  • 如何将文件放到远程服务器上?
猜你喜欢
  • 2020-11-03
  • 2020-12-07
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 2014-07-10
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多