gpt4 book ai didi

excel - 使用VBA运行WinSCP脚本

转载 作者:行者123 更新时间:2023-12-03 01:57:27 26 4
gpt4 key购买 nike

我可以使用以下代码在 CMD 窗口中从 SFTP 下载文件:

WinSCP.com
# Connect to the host and login using password
open user:pw@address
# get all the files in the remote directory and download them to a specific local directory
lcd C:\Users\xx\Desktop
get *.xlsx
# Close and terminate the session
exit

网上搜索了一下,发现可以将这些代码放在bat文件中使用

Call Shell("cmd.exe /c C:\Users\xx\Desktop\WinSCPGet.bat", 1)

但是,仅执行bat 文件WinSCP.com 的第一行。它将弹出 cmd 窗口,显示这一点,而不执行任何其他操作。 enter image description here

如何一次性执行所有行?

谢谢

最佳答案

您拥有的代码不是 Windows 批处理文件。它是一个 Windows 命令,后跟 WinSCP 命令。第一个命令运行 winscp.com 应用程序,然后该应用程序等待输入。如果您最终关闭它,Windows 命令解释器 (cmd.exe) 将继续执行其余命令,但大多数会失败,因为它们不是 Windows 命令。另请参阅WinSCP script not executing in batch file和 WinSCP 常见问题解答 Why are some WinSCP scripting commands specified in a batch file not executed/failing?

因此,您必须将命令(打开退出)保存到WinSCP脚本文件(例如script.txt)并执行使用 /script switch 的脚本:

Call Shell("C:\path\winscp.com /ini=nul /script=c:\path\script.txt")

或者,使用 /command switch 在 WinSCP 命令行上指定所有命令。 :

Call Shell("C:\path\winscp.com /ini=nul /command ""open user:pw@address"" ""lcd C:\Users\xx\Desktop"" ""get *.xlsx"" ""exit""")

关于引号:使用 /command 开关,您必须将每个命令用双引号引起来。在 VBA 字符串中,要使用双引号,必须通过将其加倍来转义。

<小时/>

另请注意,您通常应该使用 /ini=nul switchisolate the WinSCP script run from your WinSCP configuration 。这样您还可以确保脚本将在其他计算机上运行。您的脚本不会,因为它缺少 -hostkey switchverify the SSH host key fingerprint 。使用 /ini=nul 将帮助您认识到这一点。

<小时/>

您可以有WinSCP GUI generate complete command-line (包括-hostkey)为您服务。

另请参阅Automating file transfers to SFTP server with WinSCP .

关于excel - 使用VBA运行WinSCP脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37280733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com