Batch file 批处理文件中未执行WinSCP脚本
我有一个在命令提示符下完美执行的脚本。 如果我将脚本直接复制并粘贴到命令窗口,那么它工作正常,但当像Windows批处理文件一样保存并运行它时,它将挂起Batch file 批处理文件中未执行WinSCP脚本,batch-file,cmd,winscp,Batch File,Cmd,Winscp,我有一个在命令提示符下完美执行的脚本。 如果我将脚本直接复制并粘贴到命令窗口,那么它工作正常,但当像Windows批处理文件一样保存并运行它时,它将挂起 option batch abort cd \program files\winscp\ winscp.com /command "open HennTest:Nate82@data.test.com" /privatekey=C:\HennTest\VCS\HennTest_key_putty.ppk option confirm off
option batch abort
cd \program files\winscp\
winscp.com /command "open HennTest:Nate82@data.test.com" /privatekey=C:\HennTest\VCS\HennTest_key_putty.ppk
option confirm off
get /*.csv C:\HennTest\VCS\
close
exit
当使用like batch时,它正在连接到服务器,但没有执行get
语句,但当我直接复制/粘贴它时,它工作正常。
我需要像批处理一样使用它,因为我想自动执行脚本来下载文件。将命令提示符视为提示的输入序列,而批处理脚本是执行的命令序列。批处理脚本不知道get、close和exit语句实际上是winscp提示的输入,但正在等待winscp完成后分别运行它们 您可以尝试在批处理文件中将输入管道化到winscp,如下所示:
cd \program files\winscp\
(
echo.option batch abort
echo.option confirm off
echo.get /*.csv C:\HennTest\VCS\
echo.close
echo.exit
) | winscp.com /command "open HennTest:Nate82@data.test.com" /privatekey=C:\HennTest\VCS\HennTest_key_putty.ppk
注意:根据程序实现输入缓冲区的方式,此管道方法可能不起作用。您正在将WinSCP命令和Windows命令合并到一个文件中。这是行不通的。批处理文件在调用
winscp.com
时停止,并等待其完成。相反,WinSCP甚至不知道批处理文件存在,因此无法从中读取其命令
请参阅WinSCP常见问题解答
这项工作:
cd \program files\winscp\
winscp.com /command ^
"open sftp://HennTest:Nate82@data.test.com -privatekey=C:\HennTest\VCS\HennTest_key_putty.ppk" ^
"get /*.csv C:\HennTest\VCS\" ^
"close" ^
"exit"
它利用了可用于在其命令行上指定WinSCP命令的
请注意,我已经纠正了一些其他错误:
是WinSCP命令,而不是Windows命令,因此您不能在WinSCP之前执行它。无论如何,最新版本的WinSCP,在运行脚本或命令行中指定的命令时。因此,您根本不需要该命令选项batch abort
- 不应与脚本结合使用。使用的
开关-privatekey
- 在最新版本的WinSCP中,
也是默认设置选项confirm off
- 虽然WinSCP默认为SFTP协议,但建议在“无论如何”中明确提及
前缀SFTP://