Je travaille sur un fichier bat dans lequel je dois me connecter à un serveur de suppression via SFTP avec WinSCP, exécuter un script shell et obtenir un fichier sur le système à partir du serveur distant.
Ci-dessous le code.
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
Cependant, lors de l'exécution de ce fichier, l'exécution s'arrête après la deuxième ligne. Je suis nouveau à cela, s'il vous plaît laissez-moi savoir où je me trompe. Merci d'avance pour toute l'aide.
windows
batch-file
sftp
winscp
Preeti Maurya
la source
la source
Réponses:
Votre fichier de commandes est interprété par l'interpréteur de commandes Windows, le
cmd.exe
, ligne par ligne.Donc, une fois que la
winscp.com
ligne est atteinte, l'interprète s'exécutewinscp.com
et attend qu'elle sorte (ce qu'il ne fait jamais seul). Si cela s'était terminé, l'interprète continuerait à exécuter les autres commandes qui échouaient le plus (car ce ne sont pas des commandes Windows valides).Les lignes qui sont en réalité des commandes WinSCP, et non des commandes Windows, doivent être alimentées vers WinSCP, et non vers
cmd.exe
.Voir aussi FAQ WinSCP Pourquoi certaines commandes de script WinSCP spécifiées dans un fichier de commandes ne sont-elles pas exécutées / en échec?
Avant de continuer, permettez-moi de corriger votre mauvaise syntaxe WinSCP. Pour l'automatisation, vous n'utilisez pas l' URL de session sur la ligne de commande WinSCP, vous utilisez à la place
open
commande . Mes exemples suivants l'utiliseront à la place.Il y a deux manières:
Séparez les commandes WinSCP dans un fichier de script WinSCP distinct , par exemple
script.txt
:Et lancez le comme:
En utilisant le commutateur de ligne de commande WinSCP
/command
, vous pouvez tout conserver dans un seul fichier (le fichier de commandes) avec une syntaxe comme celle-ci:Vous devriez lire le guide WinSCP sur l’automatisation des transferts de fichiers sur un serveur SFTP .
la source