将参数传递给winscp.com命令行

时间:2012-02-28 09:14:18

标签: command-line scripting automation winscp

我正在尝试编写WinSCP脚本。我试过这个例子,
https://winscp.net/eng/docs/guide_automation#parametrized

但脚本不采用参数值。

当脚本被调用为

winscp.com /script=testscript /parameter param1

发生以下情况:

首先,

Searching for host
host not found

显示。

接下来,实际使用

连接到主机
"open command"

但参数永远不会被替换。

它仍显示为%1

3 个答案:

答案 0 :(得分:4)

我不知道你在谈论哪个例子,但我会告诉你一些我有的示例代码。我希望它有所帮助。此代码全部位于.bat文件中。

在此示例中,变量%folder%使用今天日期的名称格式为2/28/2012。然后我询问用户他们的用户名,并将其保存在变量%username%中,与%password%相同。然后,我使用%folder%变量创建一个名为%folder%。

的文件夹的目录

现在我们深入研究实际的'WinSCP代码'。

然后我找到了WinSCP.exe的路径,然后调用了控制台。调用控制台后,我使用'open'命令和%Username%和%Password%变量连接到我的WinSCP服务器。

@ECHO OFF
cls
set folder=%date:~4,2%-%date:~7,2%-%date:~10,4%

SET /P username="Enter Username: "
IF "%username%"=="" GOTO Error

SET /P password="Enter Password: "

rem -- Clear Screen to hide password
cls

IF "%password%"=="" GOTO Error
    md C:\Logs\%folder%\int-rpt01\
    "C:\""Program Files""\WinSCP\WinSCP.exe" /console /command "option batch abort" 
    "option confirm off" "open sftp://%username%:%password%@server.server.net:22"
    "get /opt/ibm/cognos/c10_64/logs/cogserver.* C:\CogServerLogs\%folder%\int-rpt01\" "exit"

我希望这会有所帮助。有关您正在使用哪个示例以及您如何使用它的更多信息将不胜感激。

答案 1 :(得分:3)

作为参考,因为我刚试图自己解决这个问题,所以语法应该是:

在您的脚本文件中: put "%1%" %2%

然后从命令行调用它 winscp.com /script=script.file /parameter foo.txt bar/

这将解析脚本 put "foo.txt" bar/

答案 2 :(得分:2)

要将参数传递给open命令,请按%1%进行操作,理想情况下请用双引号括起来:

open "%1%"

参见:
https://winscp.net/eng/docs/scripting#syntax

另见parametrized script example


同样从WinSCP的行为(特别是在实际执行open命令之前尝试打开连接),我假设您使用的是不了解{{1}的旧版WinSCP参数尚未。请确保使用最新版本的WinSCP。