Il file batch non esegue completamente lo script WinSCP


1

Sto lavorando a un file bat in cui devo accedere a un server di rimozione tramite SFTP con WinSCP ed eseguire uno script di shell e ottenere un file sul sistema dal server remoto.

Di seguito è riportato il codice.

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

Tuttavia, durante l'esecuzione di questo file, interrompe l'esecuzione dopo la seconda riga. Sono nuovo di questo, per favore fatemi sapere dove sto sbagliando. Grazie in anticipo per tutto l'aiuto.


Devi inserire i tuoi comandi winscp in un file di script
DavidPostill

Risposte:


2

Il file batch viene interpretato dall'interprete dei comandi di Windows, il cmd.exe, riga per riga.

Quindi, una volta winscp.comraggiunta la linea, l'interprete corre winscp.come aspetta che esca (cosa che non fa mai da solo). Se fosse uscito, l'interprete avrebbe continuato a eseguire gli altri comandi non riuscendo di più (poiché non sono comandi di Windows validi).

Le righe che sono in realtà comandi WinSCP, non comandi Windows, devono essere inviate a WinSCP, non a cmd.exe.

Vedere anche Domande frequenti su WinSCP Perché alcuni comandi di scripting WinSCP specificati in un file batch non vengono eseguiti / non vengono eseguiti?


Prima di continuare, lasciami correggere la sintassi WinSCP sbagliata. Per l'automazione, non si utilizza l' URL della sessione nella riga di comando di WinSCP, si utilizza invece il opencomando . I miei seguenti esempi lo useranno invece.


Ci sono due modi:

  • Separare i comandi WinSCP in un file di script WinSCP separato , ad esempio script.txt:

    open sftp://userid:password@hostname
    cd /var/tmp
    call ./script.sh 
    get /var/tmp/log.txt C:\Preeti\log.txt
    exit
    

    Ed eseguilo come:

    cd C:\Program Files\WinSCP
    winscp.com /script=c:\path\to\script.txt
    
  • Utilizzando l' opzione della /commandriga di comando WinSCP , è possibile conservare tutto in un singolo file (il file batch) con una sintassi come:

    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"
    

Dovresti leggere la guida di WinSCP per automatizzare i trasferimenti di file sul server SFTP .


Grazie @Martin Prikryl. Apprezzo molto il vostro aiuto.
Preeti Maurya,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.