如何将AutoIt脚本中的用户输入传递给WinSCP?

时间:2014-10-03 00:46:27

标签: autoit winscp

我正在尝试使用带WinSCP的AutoIt构建FTP传输脚本

我正在使用winscp.com。

我想从用户(通过GUI)获取输入,然后在我的命令中使用这些输入用于WinSCP。

例如,我想根据用户的选择设置本地目录。

当前情况:我能够存储用户的输入,但是当我尝试使用AutoIt脚本在WinSCP命令控制台中传递相同内容时,它既不会读取变量,也不会简单地给出和未知的命令错误。

RunWait(@ComSpec & ' /k ' & 'winscp.com /command  "option batch continue" ' & '"option confirm off" '  & ' "open xyz"' & ' "lcd" ' & $Dir )

其中$Dir具有使用GUICtrlRead()存储的用户输入的值。

请建议是否有其他方法让WinSCP控制台读取我的用户数据(我想每次都由用户捕获唯一数据,所以不想制作配置文件)。

由于

1 个答案:

答案 0 :(得分:1)

虽然我不知道自动语法,但我很确定你的引号有误。

双引号必须围绕整个lcd命令,包括其参数。您现在拥有的扩展命令必须类似于"lcd /path/to/dir",而不是"lcd" /path/to/dir。就像你使用open(即"open xyz")一样。

此外,如果您需要在路径中使用空格,则路径本身必须是双引号。由于引用发生在命令行上(与脚本文件相反),其中双引号具有其含义,所以命令内双引号必须通过将它们加倍来转义,例如结果语法为"lcd ""/path/to/dir"""

所以,而不是

... ' "lcd" ' & $Dir

使用

... ' "lcd ""' & $Dir & '"""'

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

另外我相信你并不需要在常量字符串之间进行所有这些连接,只需这样做:

RunWait(@ComSpec & ' /k winscp.com /command "option batch continue" "option confirm off" "open xyz" "lcd ""' & $Dir & '"""')