O arquivo em lote não executa o script WinSCP completamente

0

Estou trabalhando em um arquivo bat no qual preciso fazer login em um servidor de remoção por meio de SFTP com WinSCP e executar um script de shell e obter um arquivo para o sistema a partir do servidor remoto.

Abaixo está o código.

cd C:\Program Files\WinSCP
winscp.com sftp://userid:password@hostname
cd /var/tmp
call ./script.sh 
get /var/tmp/log.txt C:\Preeti\log.txt
exit

No entanto, durante a execução deste arquivo, ele interrompe a execução após a segunda linha. Eu sou novo nisso, por favor, deixe-me saber onde estou indo errado. Agradecemos antecipadamente por toda a ajuda.

    
por Preeti Maurya 28.04.2016 / 14:31

1 resposta

2

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 .

    
por 28.04.2016 / 14:55