script run portable open example batch bat automatic batch-file cmd winscp

batch-file - run - winscp portable



El script WinSCP no se ejecuta en el archivo por lotes (2)

Está combinando comandos WinSCP y comandos de Windows en un archivo. Eso no puede funcionar. El archivo por lotes se detiene en una llamada a winscp.com y espera a que finalice. WinSCP, por el contrario, no sabe que el archivo por lotes incluso existe, por lo que no puede leer sus comandos desde allí.

Esto funciona:

cd /program files/winscp/ winscp.com /command ^ "open sftp://HennTest:[email protected] -privatekey=C:/HennTest/VCS/HennTest_key_putty.ppk" ^ "get /*.csv C:/HennTest/VCS/" ^ "close" ^ "exit"

Utiliza el comando /command interruptor de línea de comando WinSCP que puede usar para especificar comandos de WinSCP en su línea de comandos.

Tenga en cuenta que he corregido algunos otros errores:

  • La option batch abort es el comando WinSCP, no el comando de Windows, por lo que no puede ejecutarlo antes de WinSCP. De todos modos, las últimas versiones de WinSCP se ejecutan de forma predeterminada en el batch abort , cuando se ejecutan comandos especificados en secuencia de comandos o línea de comandos. Entonces no necesitas el comando en absoluto.
  • El /privatekey línea de comando /privatekey no debe combinarse con scripts. Use el interruptor de -privatekey del comando open .
  • La option confirm off también está predeterminada en la versión reciente de WinSCP.
  • Mientras que WinSCP se establece de manera predeterminada en el protocolo SFTP, es aconsejable mencionar explícitamente el prefijo sftp:// en la URL de la sesión de todos modos.

Tengo un script que se ejecuta perfectamente en el símbolo del sistema. Si copio y pego el script directamente en la ventana de comandos, funciona bien, pero cuando lo guardo como archivo por lotes de Windows y lo ejecuto, se cuelga.

option batch abort cd /program files/winscp/ winscp.com /command "open HennTest:[email protected]" /privatekey=C:/HennTest/VCS/HennTest_key_putty.ppk option confirm off get /*.csv C:/HennTest/VCS/ close exit

Se está conectando al servidor pero no está ejecutando la instrucción get cuando se usa un lote similar pero funciona correctamente cuando lo copio / pego directamente. Necesito usarlo como lote porque quiero automatizar el script para descargar los archivos.


Considere el símbolo del sistema como una secuencia de entradas a las solicitudes, mientras que un script por lotes es una secuencia de comandos para ejecutar . La secuencia de comandos por lotes no sabe que las instrucciones get, close y exit son en realidad entradas a las indicaciones de winscp, pero está esperando a que winscp termine de ejecutarlas individualmente.

Puede probar conectar la entrada a winscp en un archivo de proceso por lotes, de esta forma:

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:[email protected]" /privatekey=C:/HennTest/VCS/HennTest_key_putty.ppk

Nota: Este método de tubería puede no funcionar dependiendo de cómo el programa implemente el buffer de entrada.