6

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

但脚本不采用参数值。

当脚本被调用时,

winscp.com /script=testscript /parameter param1

发生以下情况:

第一的,

Searching for host
host not found

被展示。

其次,实际连接到主机使用

"open command"

但参数永远不会被替换。

它仍然显示为%1

4

3 回答 3

4

我不知道您在谈论哪个示例,但我将向您展示我拥有的一些示例代码。我希望它有所帮助。此代码全部位于 .bat 文件中。

在此示例中,变量 %folder% 使用今天的日期名称,格式为 2/28/2012。然后我向用户询问他们的用户名,它被保存在变量 %username% 中,与 %password% 相同。然后,我使用 %folder% 变量创建了一个目录,其中包含一个名为 %folder% 的文件夹。

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

然后我找到了通往我的 WinSCP.exe 的路径,然后调用了控制台。调用控制台后,我使用“打开”命令以及 %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"

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

于 2012-02-28T13:05:25.410 回答
3

作为参考,由于我只是在尝试自己解决这个问题时才来到这里,所以语法应该是:

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

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

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

于 2013-12-03T16:03:08.263 回答
2

要将参数传递给open命令,请在其后加上%1%,最好用双引号括起来:

open "%1%"

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

另请参见参数化脚本示例


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

于 2013-04-03T14:38:31.230 回答