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:
Cree un acceso directo al programa que desea ejecutar;
Edite las propiedades del atajo;
Cambie el campo
TARGET
a%COMSPEC% /C "START "" "PROGRAMNAME""
;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.