Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件中未执行WinSCP脚本_Batch File_Cmd_Winscp - Fatal编程技术网

Batch file 批处理文件中未执行WinSCP脚本

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

我有一个在命令提示符下完美执行的脚本。 如果我将脚本直接复制并粘贴到命令窗口,那么它工作正常,但当像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
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命令的


请注意,我已经纠正了一些其他错误:

  • 选项batch abort
    是WinSCP命令,而不是Windows命令,因此您不能在WinSCP之前执行它。无论如何,最新版本的WinSCP,在运行脚本或命令行中指定的命令时。因此,您根本不需要该命令
  • 不应与脚本结合使用。使用的
    -privatekey
    开关
  • 在最新版本的WinSCP中,
    选项confirm off
    也是默认设置
  • 虽然WinSCP默认为SFTP协议,但建议在“无论如何”中明确提及
    SFTP://
    前缀

您如何指定cd\program files\winscp\在开始时,我有.bat文件我需要做什么???@Avenger不知道我需要什么。