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

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

myprogram.exe param1 

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

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

 start myProgram.exe param1 exit 

Use el comando de inicio para evitar que el archivo por lotes espere el progtwig. Solo recuerde poner una comilla doble vacía delante del progtwig 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.

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 

De mi propia pregunta :

 start /b myProgram.exe params... 

funciona si inicia el progtwig 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 " 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 progtwig sin ventana. De hecho, parpadea por un segundo, pero desaparece con bastante rapidez.

 start "name" /B 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 syntax 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) 

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 

Mi solución para hacer esto desde la GUI:

  1. Cree un acceso directo al progtwig 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 progtwig 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 ).

Si este archivo por lotes es algo que desea ejecutar como progtwigdo o siempre; puede usar la herramienta de progtwigció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.

Aquí está mi solución preferida. Se toma de una respuesta 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.

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

 run myprogram.exe param1