Esta pregunta ya tiene una respuesta aquí:
He instalado una gema de rubí llamada Redcar, que se inicia desde la línea de comandos. Cuando se ejecuta, roba el shell hasta que termina, por lo que tengo que crear una nueva ventana de shell para continuar trabajando en la línea de comandos. El shell que estoy usando es el shell GITBash de MySysGit.
Encontré un archivo Redcar.bat que está destinado a iniciar Redcar como acceso directo, supongo, pero no quiero que se abra la ventana del símbolo del sistema adicional cada vez que inicie el archivo BAT.
¿Cómo ejecuto el BAT sin ver el aviso?
windows
command-line
batch
Jake
fuente
fuente
set var1=hello.txt
línea 2:start "test" notepad.exe "%~dp0%var1%"
::
o@REM
. Fuente: superuser.com/a/843754/101936Respuestas:
No puede: la ejecución de un archivo por lotes con el símbolo del sistema incorporado mantendrá una ventana abierta hasta que el archivo por lotes salga.
Lo que puede hacer es tomar medidas para asegurarse de que el archivo por lotes salga lo más rápido posible. Si es posible, modifique el archivo por lotes para ejecutar cualquier programa con el
start
comando. Por defecto,start
regresa inmediatamente sin esperar a que el programa salga, por lo que el archivo por lotes continuará ejecutándose y, presumiblemente, saldrá inmediatamente. Combine eso con la modificación de su acceso directo para ejecutar el archivo por lotes minimizado, y solo verá el flash de la barra de tareas sin siquiera ver una ventana en pantalla.Una advertencia a esto es que si está ejecutando un programa en modo consola, que son muchos de los intérpretes de script, el archivo por lotes esperará a que el programa salga, y el uso
start
generará una nueva ventana de consola. Lo que debe hacer en este caso es ejecutar la versión del intérprete basada en Windows en lugar de la versión de la consola, no esstart
necesario. Para Perl, correría enwperl.exe
lugar deperl.exe
. Para Python, es enpythonw.exe
lugar depython.exe
. La distribución anterior de Win32 Ruby que he descargado tienerubyw.exe
, que debería hacer lo mismo.Una última posibilidad es utilizar una herramienta de terceros para ejecutar el símbolo del sistema con una ventana oculta. He oído hablar de tales cosas, pero nunca tuve un uso para ellas, así que no sé nada en particular para señalarlo.
fuente
Creo que esta es la solución más fácil y más corta para ejecutar un archivo por lotes sin abrir la ventana de DOS, puede ser muy molesto cuando desea programar un conjunto de comandos para que se ejecute periódicamente, por lo que la ventana de DOS sigue apareciendo, aquí está su solución . Use una secuencia de comandos VB para llamar al archivo por lotes ...
Copie las líneas anteriores a un editor y guarde el archivo con la extensión .VBS. Edite el nombre de archivo .BAT y la ruta en consecuencia. ¡Entonces solo ejecute el archivo .vbs y la magia sucede!
fuente
Puede ejecutar otro archivo por lotes con START / MIN CMD.EXE / C mybatchfile.bat desde el símbolo del sistema.
Desde afuera, traerá la ventana de la consola cmd, pero para evitar eso, puede crear un archivo de acceso directo con propiedades modificadas para comenzar minimizadas .
fuente
Para hacer esto, use el programa Bat To Exe Converter para convertir su archivo por lotes a un archivo ejecutable.
Al convertirlo en un ejecutable, encontrará una opción para ejecutar su archivo como una aplicación invisible en la sección de visibilidad. Por lo tanto, cuando lo ejecute, se ejecutará sin una ventana.
fuente
Continuando con la respuesta de Dennis Williamson, puede editar el archivo por lotes y agregar (anteponer)
START /B
al comando que está ejecutando.Por ejemplo, tengo un archivo por lotes que ejecuta masilla y tenía el mismo problema (CMD adicional), así que así es como lo escribí:
Funcionó perfectamente.
fuente
Prueba esto:
nota agregada por barlop
comienzo /? dice de / B
fuente
No tengo claro cuál es su problema, pero con algunos de mis archivos por lotes, uso un "dumy" cuyo único propósito es iniciar el archivo por lotes principal.
Entonces GO.BAT tendrá:
La salida cierra la ventana del símbolo del sistema que, de lo contrario, permanecería abierta.
Y GO2.BAT tendrá el contenido del archivo realmente por lotes que deseo.
fuente
Podrías usar RunHiddenConsole
hideExec.bat
fuente
Si todavía está interesado en no mostrar la ventana de la consola, aquí hay una solución de stackoverflow que funcionó para mí (en mi caso, no puse nada en el registro, pero donde lo necesitaba).
fuente
Simplemente coloque el modificador / b delante del camino. No abrirá el segundo símbolo del sistema.
fuente
La respuesta de Indago ha sido la mejor solución para mí hasta ahora. El archivo VBS me permite ejecutar la funcionalidad del lote a través del script, evitando que la ventana CMD ocurra en primer lugar. Sin embargo, hay algunas advertencias:
Si su lote requiere derechos de administrador, cree o use un lote existente que llame a VBS y ejecútelo como administrador.
Sin visibilidad, puede ser difícil discernir si lo que estás tratando de hacer realmente funciona de la manera que quieres.
Dicho esto, primero pondría un pequeño simulacro de configuración / prueba de unidad para asegurarme de que funciona exactamente de la manera deseada, antes de integrarlo.
fuente
He usado cmdow en el pasado, y parece haber funcionado para lo que quiero.
Probablemente quiera usar una de las siguientes opciones:
CMDOW [window] /HID
/HID
oculta la ventana especificadaCMDOW [window] /END
/END
cierra la ventana especificadaCMDOW [window] /CLS
/CLS
cortésmente pidió que la ventana se cerrara (algunas ventanas pueden abrir un cuadro de diálogo)Espero que esto ayude.
fuente
Simplemente haga un acceso directo al archivo por lotes, haga clic derecho sobre él, haga clic en
Properties
, vaya a laGeneral
pestaña, marque la casilla llamadaHidden
, haga clic enApply
y luego enOK
.Ahora, cuando abra el acceso directo, ejecutará el archivo por lotes Oculto.
fuente