Seu arquivo de lote é interpretado pelo interpretador de comandos do Windows, o cmd.exe
, linha por linha.
Portanto, quando a linha winscp.com
for atingida, o intérprete executará winscp.com
e aguardará a saída (o que nunca faz por conta própria). Se ele tivesse saído, o intérprete continuaria executando os outros comandos com a maior falha (já que eles não são comandos válidos do Windows).
As linhas que são, na verdade, comandos WinSCP, não comandos do Windows, precisam ser alimentadas no WinSCP, não no cmd.exe
.
Antes de continuar, deixe-me corrigir sua sintaxe errada do WinSCP. Para automação, você não usa o URL da sessão na linha de comando do WinSCP, você usa open
command em vez disso. Meus exemplos a seguir usarão isso.
Existem duas maneiras:
-
Separe os comandos do WinSCP em um arquivo de script WinSCP separado, digamos
script.txt
:open sftp://userid:password@hostname cd /var/tmp call ./script.sh get /var/tmp/log.txt C:\Preeti\log.txt exit
E corra como:
cd C:\Program Files\WinSCP winscp.com /script=c:\path\to\script.txt
-
Usando a a chave de linha de comando WinSCP
/command
, você pode manter tudo em um único arquivo (o lote arquivo) com uma sintaxe como:cd C:\Program Files\WinSCP winscp.com /command ^ "open sftp://userid:password@hostname" ^ "cd /var/tmp" ^ "call ./script.sh" ^ "get /var/tmp/log.txt C:\Preeti\log.txt" ^ "exit"
Você deve ler o guia do WinSCP para automatizar as transferências de arquivos para o servidor SFTP .