Solución:
Incluya la frase:
@echo off
Justo en la parte superior de su guión bat.
He propuesto en la pregunta de StackOverflow una forma de ejecutar un archivo por lotes en segundo plano (no se muestran ventanas de DOS)
Eso debería responder a tu pregunta.
Aquí está:
Desde su primer script, llame a su segundo script con la siguiente línea:
wscript.exe invis.vbs run.bat %*
En realidad, está llamando a un script vbs con:
- los [path] nombre de su secuencia de comandos
- todos los demás argumentos que necesita su script (
%*
)
Luego, invis.vbs llamará a su script con el método Windows Script Host Run (), que toma:
- intWindowStyle: 0 significa “ventanas invisibles”
- bWaitOnReturn: false significa que su primer script no necesita esperar a que termine el segundo.
Vea la pregunta para el script invis.vbs completo:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
^
means "invisible window" ---|
Actualización después de los comentarios de Tammen:
Si está en una sesión de DOS y desea ejecutar otro script “en segundo plano”, un simple /b
(como se detalla en la misma pregunta antes mencionada) puede ser suficiente:
Puedes usar
start /b second.bat
para iniciar un segundo archivo por lotes de forma asincrónica desde el primero que comparte la ventana del primero.
Creo que esta es la solución más fácil y más corta para ejecutar un archivo por lotes sin abrir la ventana de DOS, puede distraer mucho cuando desea programar un conjunto de comandos para que se ejecuten periódicamente, por lo que la ventana de DOS sigue apareciendo, aquí está su solución . Utilice un script VBS para llamar al archivo por lotes …
Set WshShell = CreateObject("WScript.Shell" )
WshShell.Run chr(34) & "C:Batch Files mycommands.bat" & Chr(34), 0
Set WshShell = Nothing
Copie las líneas anteriores en un editor y guarde el archivo con la extensión .VBS. Edite el nombre del archivo .BAT y la ruta en consecuencia.