No, no puede evitar winscp.com
cambiar el título de la ventana de la consola.
Tenga en cuenta que winscp.com
solo se cambia el título de la ventana de una consola , cuyo único propósito es que sea una aplicación de consola . Como aplicación de consola, hereda una consola de la aplicación de consola principal (si existe), como la de cmd.exe
cuando se ejecuta desde un archivo por lotes. Luego puede escribir su salida en él, en lugar de abrir una ventana de consola separada, lo que de otra manera sería winscp.exe /console
hacer una llamada equivalente ( winscp.exe
es una aplicación GUI, por lo que no puede heredar una ventana de consola del proceso padre). Lea sobre los ejecutables de WinSCP .
Pero parece que también quieres evitar que los usuarios vean la salida de winscp.com
. Solo abusa de la salida (oculta) para la comprobación de errores. Ese no es un enfoque muy confiable. Es mejor usar el código de salida de WinSCP para verificar si hay errores. Consulte ¿Cómo sé que la secuencia de comandos se completó correctamente? Si necesita una comprobación de errores aún más detallada, puede usar el registro XML .
Una vez que se deshaga de su abuso de la salida de WinSCP, puede cambiar winscp.exe
con los mismos argumentos. Cuando winscp.exe
se llama con /command
switch, pero sin /console
switch, ejecuta los comandos completamente en silencio (y no cambia el título de la consola).
Aunque para un uso tan complicado, debe cambiar de secuencias de comandos WinSCP simples al ensamblado WinSCP .NET y PowerShell . Su código será mucho más limpio y robusto.
Para una solución rápida, puede ejecutar winscp.com
en su propia consola oculta.
Consulte Ejecutar un archivo por lotes de forma completamente oculta .
(aunque contrario a la mayoría de los ejemplos, desea establecer el bWaitOnReturn
argumento en True
).
Necesita su archivo por lotes para generar un .vbs
script como este:
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd.exe /c ""C:\some\path\winscp.com"" /ini=nul /script=temp.ftp ftp://username:password@host > output.txt"
oShell.Run strArgs, 0, true
Y luego ejecútelo desde el archivo por lotes como:
cscript runwinscp.vbs