如何解决批处理文件中的某些 WinSCP 命令不起作用
我正在尝试将文件从 SFTP 服务器下载到我的本地计算机,并使用 WinSCP 创建了一个按日期排列的文件夹。但它在 lcd
点下降。
这是我的脚本。
@echo off
set datetime=%date:~7,2%%date:~4,2%%date:~10,4%
set "mydir=D:\Test\%datetime%\"
mkdir "%mydir%"
echo My Directory is created "%mydir%"
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="D:\temp\WinSCP.log" /ini=nul ^
/command ^
"open sftp://username:password@sftp.server1/logs/Test/ -hostkey=""ssh-key=""" ^
"lcd %mydir%" ^
"get *.xml>1D" ^
"exit"
set WINSCP_RESULT=%ERRORLEVEL%
if %WINSCP_RESULT% equ 0 (
echo Success
) else (
echo Error
)
exit /b %WINSCP_RESULT%```
这是日志中的错误:
> 2021-03-18 09:17:10.392 lcd D:\Test\18032021\
< 2021-03-18 09:17:10.392 Script: Unknown command '
< 2021-03-18 09:17:10.392 lcd'.
. 2021-03-18 09:17:10.393 Script: Failed
. 2021-03-18 09:17:10.393 Script: Exit code: 1
. 2021-03-18 09:17:10.393 Closing connection.
. 2021-03-18 09:17:10.393 Sending special code: 1
. 2021-03-18 09:17:10.579 Session sent command exit status 0
. 2021-03-18 09:17:10.579 Main session channel closed
. 2021-03-18 09:17:10.580 All channels closed
我尝试了很多选择,但仍然失败。非常感谢任何建议指针。
问候, 无水
解决方法
您问题中的批处理文件无法产生您所描述的错误。它甚至不会将 lcd
传递给 WinSCP,因为您的批处理文件语法错误。
当你想把批处理文件中的一个命令分成多行时,你需要用^
来结束每一行,并且下一行需要缩进。
- 您的空行不以
^
结尾(例如open
和lcd
命令之间的那一行) - 所有续行都没有缩进。
这应该有效:
"C:\Program Files (x86)\WinSCP\WinSCP.com" ^
/log="D:\temp\WinSCP.log" /ini=nul ^
/command ^
"open sftp://username:password@sftp.server1/logs/Test/ -hostkey=""ssh-key=""" ^
"lcd %mydir%" ^
"get *.xml>1D" ^
"exit"
请参阅 WinSCP 常见问题解答 Why are some WinSCP scripting commands specified in a batch file not executed/failing?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。