我有一些命令行批处理代码,可以在Windows命令提示符下运行。我基本上是使用WinSCP命令行参数-https://winscp.net/eng/docs/commandline将本地文件文本文件推送到远程服务器。这些是我按顺序使用的命令:
打开winscp命令行:
winscp
然后通过ssh打开与我的服务器的连接:
open sftp://myUserName:myPassword@theRemoteServer.net
将文件上传到远程服务器:
put directoryMyLocalFileIsIn\fileToUpload.csv /locationOnRemoteServer/whatToNameFileOnRemoteServer.csv
然后关闭连接:
close
一切正常。但是,我想在RStudio中运行所有这些。 我跑步后:
shell.exec("winscp")
我可以看到winscp外壳已打开。但是,当我尝试运行以下命令时:
shell.exec("open sftp://myUserName:myPassword@theRemoteServer.net")
它只是无法在打开的winscp shell中运行。.我还使用了R命令的各种组合,例如shell,system2和shell。
同样,我可以从R内部成功打开winscp shell。但是我不知道如何在该shell中运行命令。有人知道该怎么做吗?
谢谢。
答案 0 :(得分:2)
您需要调用WinSCP并使用来自R的单个调用指定所有命令。执行此操作的最佳方法是将WinSCP命令保存在单个文本文件中,例如myscript.txt
:
open sftp://myUserName:myPassword@theRemoteServer.net
put directoryMyLocalFileIsIn\fileToUpload.csv /locationOnRemoteServer/whatToNameFileOnRemoteServer
exit
然后,您可以从命令行按如下所示调用WinSCP(请参见WinSCP documentation):
winscp.com /script=myscript.txt
(您可能需要指定WinSCP和myscript.txt的确切路径)
最后,要从R中完成此操作,请使用system2
命令,如下所示:
system2(
"winscp.com",
args = c("/script=myscript.txt"))
同样,您可能需要指定到winscp.com
和myscript.txt
的路径。