我正在尝试编写WinSCP脚本。我试过这个例子,
https://winscp.net/eng/docs/guide_automation#parametrized
但脚本不采用参数值。
当脚本被调用为
时winscp.com /script=testscript /parameter param1
发生以下情况:
首先,
Searching for host
host not found
显示。
接下来,实际使用
连接到主机"open command"
但参数永远不会被替换。
它仍显示为%1
答案 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。