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 elbatch 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 comandoopen
. - 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.