2011-08-04 13 views
8

He buscado esto y aparecieron algunas páginas que no eran realmente útiles o eran demasiado complicadas (¡no soy un programador experto en archivos por lotes!)! Lo que necesito es ejecutar un archivo por lotes en forma oculta (sin ventana de consola). No se llamará al archivo por lotes desde una aplicación o código externo. El cliente hará clic en él y luego quiero que no se muestren las páginas de la consola (¡solo deberían mostrarse las páginas que son llamadas por el comando de llamada)! El archivo por lotes exactamente es el siguiente:Ocultando una ventana de proceso por lotes simple

@echo off 
call setup.exe 
IF EXIST "C:/caillog" goto tracking 
IF NOT EXIST "C:/caillog" goto end 


:tracking 
call dotnet4.exe 
call ClientService.msi 
goto end 

:end 

Respuesta

11

utilizo VBScripts para abrirlo oculto, como esto:

Set objShell = WScript.CreateObject("WScript.Shell") 
objShell.Run("%batchfile%"), 0, True 

por ejemplo, el archivo del palo Quiero correr es run.bat entonces me gusta este

objShell.Run("run.bat"), 0, True 

En lugar de ejecutar el archivo por lotes ejecuta el archivo VB.

escribir en el bloc de notas y guardarlo como * .vbs

+0

% batchfile% debe ser file.bat o% file.bat% o cómo funciona eso? –

+1

Acabo de poner eso como un marcador de posición para su archivo por lotes, donde he puesto "% batchfile%" simplemente ponga su ruta de archivo por lotes entre las comillas –

+1

Ejemplo - objShell.Run ("C: \ batchfile.bat"), 0 , True –

0

Como han dicho otros, utilizar la EBV.

Set WinScriptHost = CreateObject("WScript.Shell") 
WinScriptHost.Run Chr(34) & "C:\FilePath" & Chr(34), 0 
Set WinScriptHost = Nothing 

Esto es lo que uso.

Cuestiones relacionadas