ver usar sintaxis que ejemplos ejecutar desde como comandos comando bat windows batch-file

windows - usar - ¿Cómo puedo ejecutar un programa desde un archivo por lotes sin dejar la consola abierta después de que se inicia el programa?



que es el comando cmd (11)

Por el momento, mi archivo por lotes se ve así:

myprogram.exe param1

El programa se inicia, pero la ventana de DOS permanece abierta. ¿Cómo puedo cerrarlo?


Aquí está mi solución preferida. Se toma de una answer a una pregunta similar.

Use una secuencia de comandos VBS para llamar al archivo por lotes:

Set WshShell = CreateObject("WScript.Shell") WshShell.Run chr(34) & "C:/path/to/your/batchfile.bat" & Chr(34), 0 Set WshShell = Nothing

Copie las líneas de arriba a un editor y guarde el archivo con la extensión .VBS.


Cómo resolver "problemas de espacio" y dependencias locales:

@echo off cd "C:/Program Files/HeidiSQL" start heidisql.exe cd "C:/Program Files (x86)/Google/Chrome/Application" start chrome.exe exit


De mi propia pregunta :

start /b myProgram.exe params...

funciona si inicia el programa desde una sesión de DOS existente.

Si no, llame a un script vb

wscript.exe invis.vbs myProgram.exe %*

El método Windows Script Host Run () toma:

  • intWindowStyle: 0 significa "ventanas invisibles"
  • bWaitOnReturn: falso significa que su primer script no necesita esperar a que termine su segundo script

Aquí está invis.vbs:

set args = WScript.Arguments num = args.Count if num = 0 then WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>" WScript.Quit 1 end if sargs = "" if num > 1 then sargs = " " for k = 1 to num - 1 anArg = args.Item(k) sargs = sargs & anArg & " " next end if Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False


Deberías probar esto. Inicia el programa sin ventana. De hecho, parpadea por un segundo, pero desaparece con bastante rapidez.

start "name" /B myprogram.exe param1


Estaba teniendo este problema y lo siguiente funcionó para mí:

run myprogram.exe param1


Esto es lo único que funcionó para mí cuando traté de ejecutar una clase java desde un archivo por lotes:

start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm

Puede personalizar el comando de start como desee para su proyecto, siguiendo la sintaxis adecuada:

Syntax START "title" [/Dpath] [options] "command" [parameters] Key: title : Text for the CMD window title bar (required) path : Starting directory command : The command, batch file or executable program to run parameters : The parameters passed to the command Options: /MIN : Minimized /MAX : Maximized /WAIT : Start application and wait for it to terminate /LOW : Use IDLE priority class /NORMAL : Use NORMAL priority class /HIGH : Use HIGH priority class /REALTIME : Use REALTIME priority class /B : Start application without creating a new window. In this case ^C will be ignored - leaving ^Break as the only way to interrupt the application /I : Ignore any changes to the current environment. Options for 16-bit WINDOWS programs only /SEPARATE Start in separate memory space (more robust) /SHARED Start in shared memory space (default)


Mi solución para hacer esto desde la GUI:

  1. Cree un acceso directo al programa que desea ejecutar;

  2. Edite las propiedades del atajo;

  3. Cambie el campo TARGET a %COMSPEC% /C "START "" "PROGRAMNAME"" ;

  4. Cambie el campo RUN a minimizado.

¡Listo! Mira cómo te gusta ...

PD: los parámetros del programa se pueden insertar entre las dos comillas finales; la cadena PROGRAMNAME puede ser un nombre de archivo, una ruta relativa o absoluta: si coloca una ruta absoluta y borra la letra de la unidad y el punto y coma, esto funcionará en una unidad Thumbdrive sin importar la letra que la computadora host le haya asignado. .. (también, si coloca el acceso directo en la misma carpeta y antecede el nombre del archivo en PROGRAMNAME con la variable %CD% , las rutas siempre coincidirán, el mismo truco se puede usar en el campo START IN ).


Mira el comando START, puedes hacer esto:

START rest-of-your-program-name

Por ejemplo, este archivo por lotes esperará hasta que salga el bloc de notas:

@echo off notepad c:/test.txt

Sin embargo, esto no:

@echo off start notepad c:/test.txt


Puede usar la palabra clave exit. Aquí hay un ejemplo de uno de mis archivos por lotes:

start myProgram.exe param1 exit


Si este archivo por lotes es algo que desea ejecutar como programado o siempre; puede usar la herramienta de programación de Windows y no se abre en una ventana cuando inicia el archivo por lotes.

Para abrir Task Scheduler :

  • Inicio -> Ejecutar / Buscar -> ''cmd''
  • Escriba taskschd.msc -> enter

Desde el lado derecho, Create Basic Task clic en Create Basic Task y sigue los menús.

Espero que esto ayude.


Use el comando de inicio para evitar que el archivo por lotes espere el programa. Solo recuerde poner una comilla doble vacía delante del programa que desea ejecutar después de "Comenzar". Por ejemplo, si desea ejecutar Visual Studio 2012 desde un comando por lotes:

Start "" "C:/Program Files (x86)/Microsoft Visual Studio 11.0/Common7/IDE/devenv.exe"

fíjate en la comilla doble después del comienzo.