我正在尝试使用带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控制台读取我的用户数据(我想每次都由用户捕获唯一数据,所以不想制作配置文件)。
由于
答案 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 & '"""')