2009-02-03 77 views
46

Este es un archivo por lotes en Windows.Ocultar ventana de comando del archivo .BAT que ejecuta otro archivo .EXE

Aquí está mi archivo .bat

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config" 

"C:\ThirdParty.exe" 

Esto funciona bien, excepto el archivo .bat sale de la ventana de comandos abierta todo el tiempo de la aplicación "Terceros" se está ejecutando.
Necesito la ventana de comando para cerrar.

Usaría el atajo para la aplicación, pero primero debo ejecutar este comando de copia (en realidad cambia qué base de datos y servidor usar para la aplicación).

La aplicación ThirdParty no permite al usuario cambiar la fuente de la base de datos o el servidor de la aplicación.

Hacemos esto para permitir a los usuarios cambiar de un entorno de prueba al de producción.

Respuesta

38

Usando start funciona para mí:

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config" 
start C:\ThirdParty.exe 

EDIT: Ok, mirando más de cerca, start parece interpretar el primer parámetro como el nuevo título de la ventana si es citado. Entonces, si necesita citar la ruta a su ThirdParty.exe, también debe proporcionar una cadena de título.

Ejemplos:

:: Title not needed: 
start C:\ThirdParty.exe 

:: Title needed 
start "Third Party App" "C:\Program Files\Vendor\ThirdParty.exe" 
+0

Ahora la aplicación Thirdparty no se inicia y la ventana de mi comando permanece abierta. – JeffO

+0

Sí, tienes razón. Cuando utilicé esto no cité la ruta a mi aplicación. Por favor, eche un vistazo a mi respuesta revisada. –

+0

Gracias a Patrick Cuff por mejorar mi respuesta. Todavía soy nuevo en SO y no me había dado cuenta hasta ahora de que la reputación suficiente te permitía editar las publicaciones de otras personas ... –

3

Realmente no he encontrado una buena manera de hacerlo de forma nativa, así que solo uso una utilidad llamada hstart que lo hace por mí. Si hay una manera más ordenada de hacerlo, estaría bien.

+0

HStart es una excelente utilidad para el reemplazo del CMD ventana, además de que debe funcionar con PowerShell y Ruby – SteveC

10

Prueba esto:

@echo off 
copy "C:\Remoting.config-Training" "C:\Remoting.config" 
start C:\ThirdParty.exe 
exit 
+0

No utilice las comillas en C: \ ThirdParty.exe y esto funcionará perfectamente. –

+0

Genial, gracias Patrick. – QAZ

+0

Eso funcionó perfectamente para mí también, gracias. – sclarson

1

por favor utilice éste, lo anterior no funciona. He probado en el servidor de ventanas 2003.

+2

¿Qué error obtuviste indicando que 'arriba' no funciona? Tal vez es porque estás usando Windows Server? – JeffO

6

Usando start funciona bien, a menos que utilice un lenguaje de script. Afortunadamente, hay una salida para Python - sólo tiene que utilizar en lugar de pythonw.exepython.exe:

:: Title not needed: 
start pythonw.exe application.py 

En caso de que necesite cotizaciones, hacer esto:

:: Title needed 
start "Great Python App" pythonw.exe "C:\Program Files\Vendor\App\application.py" 
1

ejecutar el programa bajo un usuario diferente. suponiendo que se trata de un cuadro de Windows, cree una cuenta de usuario para las tareas programadas. ejecutarlo como ese usuario. El símbolo del sistema solo se mostrará para el usuario actualmente conectado.

6

Great tip. Funciona con archivos por lotes que también ejecutan un programa Java.

start javaw -classpath "%CP%" main.Main 
+0

Esto funcionó excelente para mí, sin embargo, todo lo que tuve que hacer fue guardar 'start javaw mainClass' en mi archivo' .bat' y ¡fue genial! – rfoo

2

compilar el archivo por lotes a un ejecutable usando Batch2Exe http://www.f2ko.de/programs.php?lang=en&pid=b2e. Use la opción "Ventana invisible".

+2

No había suficiente información acerca de esta aplicación como para que me sintiera cómoda probándola. PREGUNTAS MÁS FRECUENTES. Demostración, algo más que una captura de pantalla de una sola pestaña. – JeffO

+0

Softpedia parece tener una buena opinión sobre el tema: Bat to EXE Converter 1.6.0 - Softpedia "100% CLEAN" PREMIO. Aquí hay un enlace de descarga alternativo: http://www.softpedia.com/get/System/File-Management/Batch-To-Exe-Converter.shtml –

+0

Lo usé. Funcionó en mi única computadora, pero moví los archivos exe a otra y no funcionan en ella. –

2

Usted podría estar interesado en probar mi programa silentbatch, que se desarrollará un guión .bat/.cmd, suprimir la creación de la ventana de símbolo del sistema en su totalidad (por lo que no verá que aparecen y luego desaparecen), y opcionalmente registrar la salida a un archivo especificado.

2

Puede crear un script VBS que obligará a la ventana que se oculta.

================... Set WshShell = WScript.CreateObject("WScript.Shell") obj = WshShell.Run("""C:\Program Files (x86)\McKesson\HRS Distributed\SwE.bat""", 0) set WshShell = Nothing '=====================================...

Entonces, en lugar de ejecutar el archivo por lotes, ejecutar el script.

9

Crear un archivo .vbs con este código:.

CreateObject ("Wscript.Shell") Ejecutar "your_batch.bat", 0, True

Este .vbs se ejecutará your_batch.bat oculto.

funciona bien para mí.

+0

Gracias, esta es la respuesta correcta – dns

+0

Esta es realmente la respuesta. –

+0

Esto funcionó para mí – user5155835

1

Para hacer que la ventana de comando de un archivo .bat que ejecuta un archivo .exe salga lo más rápido posible, use la línea @start antes del archivo que está intentando ejecutar. Aquí está un ejemplo:

(insert other code here) @start executable.exe (insert other code here)

Usted no tiene que utilizar otro código con @start executable.exe.

1

o puede utilizar:.

Start /d "the directory of the executable" /b "the name of the executable" "parameters of the executable" %1 (1% es si un archivo, se pasa a su ejecutable, por ejemplo, foo.txt notepad.exe, aquí% 1 es "foo.txt"

Los parámetros/b del comando de inicio hacen esto: "Inicia una aplicación sin abrir una nueva ventana del símbolo del sistema. El manejo de CTRL + C se ignora a menos que la aplicación habilite el procesamiento CTRL + C. Use CTRL + BREAK para interrumpir la aplicación. " que es exactamente lo que queremos.

Cuestiones relacionadas