2008-11-27 20 views

Respuesta

135

Puede usar la palabra clave exit. Este es un ejemplo de uno de mis archivos por lotes:

start myProgram.exe param1 
exit 
+16

Tenga en cuenta que esto va a hacer las cosas no agradables si está utilizando la consola interactiva en lugar de sólo hacer doble clic en un archivo por lotes. En general, hay poca o ninguna necesidad de poner 'exit' en un archivo por lotes. – Joey

+21

Intenté este comando en Win8. No estoy seguro si es diferente, pero tenga en cuenta que debe proporcionarle un título de Ventana como primer parámetro.Cuando yo corría de la manera descrita Patrick, sería simplemente abrir una nueva ventana de comandos con "MyProgram.EXE" como el título de la ventana: 'start "VPN" "C: \ Archivos de programa (x86) \ Cisco \ Cisco AnyConnect Secure Mobility Client \ vpnui.exe "' –

+3

Tenga en cuenta que si su comando contiene espacios y se puso en cotizaciones, debe agregar un parámetro adicional citado ante sí, como START interpreta el primer parámetro citado nombre de la ventana y sólo el segundo parámetro de comando como folowing nombre. –

50

Mira el comando START, usted puede hacer esto:

START rest-of-your-program-name 

Por ejemplo, este archivo por lotes va a esperar hasta que salga Agenda:

@echo off 
notepad c:\test.txt 

sin embargo, esto no:

@echo off 
start notepad c:\test.txt 
18

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 
+4

La opción '" title "' es importante. Si la ruta del programa incluye espacios, debe estar entre comillas, por lo que debemos agregar '" título "' para evitar errores. –

26

Desde mi own question:

start /b myProgram.exe params... 

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

Si no es así, llame a un script VB

wscript.exe invis.vbs myProgram.exe %* 

El Windows Script Host Run() method toma:

  • entEstiloVentana: 0 significa "ventanas invisibles"
  • bWaitOnReturn: false significa que su primer script no necesita espere a que finalice su segunda secuencia de comandos

Aquí está invi s.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 
+1

+1 Tiene que haber una manera más fácil, pero esta es la única respuesta que funcionó para mí. –

+0

Gracias - esa bandera/b era exactamente lo que estaba buscando. –

0

Mi solución a hacerlo desde la interfaz gráfica de usuario:

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

  2. Edite las propiedades del acceso directo;

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

  4. Cambie el campo RUN para minimizar.

Ready! 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 de memoria sin importar qué letra le asigne la computadora host. .. (también, si coloca el atajo en la misma carpeta y antecede el nombre del archivo del programa en PROGRAMNAME con la variable %CD%, las rutas siempre coincidirán, el mismo truco se puede usar en el campo START IN).

18

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

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

se puede personalizar el comando start como desee para su proyecto, siguiendo la sintaxis correcta:

193

Utilice el comando de inicio para evitar que el archivo por lotes espere al 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 de un comando por lotes:

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

aviso las comillas después del arranque.

+12

Wow ... ¿Alguien sabe por qué funciona esto? – SharkAlley

+49

@SharkAlley El formato apropiado es 'empezar ' – Kruug

+4

Esta es la respuesta correcta. Gracias, las comillas dobles vacías son exactamente lo que necesitaba. – Richard

0

Si este archivo por lotes es algo que desea ejecutar como está 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'
  • Tipo taskschd.msc -> entrar

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

Espero que esto ayude.

10

cómo resolver "problema 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 
+0

una respuesta a la pregunta – jeb

+2

cierto, pero creo que da una buena solución que resolver otros problemas que tenía también. – Gilco

+2

Fue la solución para mí. La ventana Dos se abre pero se cierra nuevamente y la solución funciona. No entiendo los votos abajo (he votado a favor) – JoeFox

0

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

utilizar un script 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 

Copiar las líneas de arriba para un editor y guardar el archivo con extensión .vbs.

0

que estaba teniendo este problema y los siguientes trabajó para mí:

run myprogram.exe param1 
Cuestiones relacionadas