Estoy buscando alguna forma de ejecutar un archivo por lotes (.bat) sin nada visible para el usuario (sin ventana, sin nombre de barra de tareas, .etc ..).
No quiero usar algún programa para hacer eso, estoy buscando algo más limpio. He encontrado una solución que usa VBScript, pero tampoco me gusta mucho usar VBS.
windows
command-line
batch-file
Moayad Mardini
fuente
fuente
Respuestas:
Solución 1:
Guarde esta línea de texto como archivo
invisible.vbs
:Para ejecutar cualquier programa o archivo por lotes de forma invisible, úselo de esta manera:
Para poder también transmitir / transmitir una lista de argumentos, use solo dos comillas dobles
Ejemplo:
Invisible.vbs "Kill.vbs ME.exe"
Solución 2:
Utilice una herramienta de línea de comandos para iniciar un proceso de forma silenciosa : Quiet , hidecon u hideexec .
fuente
&
significa concatenar cadenas. Las cadenas están entre comillas dobles ("
). Las comillas dobles consecutivas (""
) dentro de los delimitadores de cadena significan una comilla doble literal ("
). Entonces, cuatro comillas dobles (""""
) serían una cadena literal de un carácter, una comilla doble ("
). Póngalo junto, y"""" & WScript.Arguments(0) & """"
se convertiría"<argument>"
, donde<argument>
está el primer argumento de línea de comando pasado al script.wscript.exe "C:\Wherever\invisible.vbs" ...
interior?Para ocultar archivos por lotes o archivos de comandos o cualquier archivo ... Utilice la
IExpress.exe
utilidad integrada de Windows XP para crear un .EXE a partir del archivo por lotes. Cuando lo use,IExpress
asegúrese de marcar la opción Ejecutar oculta y marque todas las casillas sobre no mostrar nada. Después de crear su .exe, colóquelo en la carpeta de comandos de ejecución que elija y nunca lo verá aparecer.fuente
use Cmdow es una utilidad de línea de comandos Win32 para NT4 / 2000 / XP / 2003 que permite que las ventanas se enumeren, muevan, cambien de tamaño, cambien de nombre, oculten / oculten, deshabiliten / habiliten, minimicen, maximicen, restauren, activen / desactiven, cierren, eliminen y más.
Ejecute un archivo por lotes oculto pasándolo parámetros: -
fuente
Si su archivo por lotes puede caber en una línea y tantos caracteres, simplemente use un acceso directo haciendo clic derecho dentro de una carpeta colocada en un directorio aleatorio, y salte el resto del asistente, y finalmente haga clic derecho en el acceso directo que acaba de crear y haga clic en propiedades y, debajo del objetivo, ingrese lo que normalmente colocaría en un archivo bat. Y Bobs tu tío!
Pros:
Contras:
fuente
Ejecute el script a través de un en el trabajo sin hacerlo interactivo:
Otra solución, si no le importa instalar algo como Python, simplemente puede crear un script y ejecutarlo
pythonw
(la versión vinculada para las operaciones GUI). Como no está utilizando ninguna API gráfica, la ventana no se mostrará. Simplemente use llamadas aos.system()
e imitará un script por lotes, ya que es lo mismo que escribir las cadenas en la línea de comando.Ejemplo:
fuente
Puede ejecutarlo minimizado fácilmente.
fuente
Con Windows7, puede usar el panel de control "Tarea programada" para programar un archivo por lotes para que se ejecute en segundo plano de forma invisible con los permisos especificados e incluso como la cuenta "SISTEMA". Ver captura de pantalla a continuación:
Además, aunque no tiene tantas capacidades, también puede crear una tarea invisible de secuencia de comandos por lotes como esta desde la línea de comandos utilizando el comando "AT.exe" sin la opción '/ interactive'.
fuente
No me gusta la solución VBScript.
Descargue y copie nircmd.exe en su
%systemroot%\system32
carpeta, luego agregue este comando a la primera línea de su lote:o haga su título de lote personalizado primero con el
title
comando para evitar ocultar todas lascmd
ventanas, de esta manera:fuente
Parece que alguien hizo una lista de las 7-8 formas de ejecutar 'silencio':
fuente
También puede crear un script de AutoHotkey :
fuente
AÚN OTRA manera, desde C / C ++, es usar la función CreateProcess con el indicador CREATE_NO_WINDOW. Tiene mucha potencia extra que no se muestra aquí. Esto es solo el mínimo que necesita para reemplazar system () o la familia _spawn ().
fuente
La excelente Bat to EXE Converter convertirá su
.bat
o.cmd
un archivo a un.exe
archivo.Tiene una interfaz de usuario simple. Puede elegir no tener una ventana de consola seleccionando la opción "Aplicación invisible". Además, le permite asignar un icono, paquete de archivos asociados y varias otras opciones.
Aquí hay una captura de pantalla de la ventana principal de la interfaz:
Tenga en cuenta que esta imagen está desactualizada. Muestra la versión 2.4.8 y, a partir de septiembre de 2018, el sitio web ofrece la versión 3.0.10.0 (última actualización 2018-03-23).
Advertencia: el sitio web www.f2ko.de enlaza
coinhive.com
, que se identifica ampliamente como malware .fuente
Lo hice con éxito con nircmd de esta manera:
nircmd.exe win hide ititle "cmd.exe"
Ahora tendrá un archivo .exe que después de hacer doble clic en él e instalarlo, su .bat se ejecutará totalmente oculto.
fuente
fuente
'cmdow' is not recognized as an internal or external command, operable program or batch file.
No necesitas hacer nada especial.
Si está ejecutando los archivos por lotes desde un servicio de Windows, deben estar ocultos de manera predeterminada a menos que habilite la opción "Permitir que el servicio interactúe con el escritorio" en el servicio.
fuente
Crear la secuencia de comandos por lotes con la lógica de comandos por lotes y en ella, y luego crear un nuevo archivo con
.VBS
la extensión, utilizar la lógica continuación (ejemplo I proporciona a continuación) y sólo tiene que conectar la ruta completa a su.CMD
o.BAT
presentar ante elPING -t <IPAddress>
, etc. comandos para ejecuta el lote de forma oculta, no muestra la ventana de comandos cuando se ejecuta.Donde la lógica en el ejemplo a continuación especifica el
C:\Folder\BatchFileName.cmd
cambio para que apunte al script por lotes con sus comandos que está ejecutando manualmente, etc. ahora.Guarde el
.VBS
archivo y prográmelo conTask Scheduler
Problemas al programar una tarea en windows7 para que se ejecute en un horario indefinido para sus necesidades.De lo contrario, simplemente haga doble clic en el
.VBS
archivo para ejecutar elPING
comando infinito que puso en el archivo por lotes al que lo señala según sea necesario.NOTA: Creo que esto es donde me dieron esta lógica secuencia de comandos desde pero funciona de forma fiable con el mismo propósito que necesita aquí es asegurar la ventana de comandos está oculto cuando un archivo por lotes se ejecuta Fuente servidor falla
EJEMPLO VBS SCRIPT RUN COMMAND LINE BATCH HIDING CMD WINDOW
fuente
Aquí he compilado todas las formas que sé para iniciar un proceso oculto con lotes sin herramientas externas. Con scripts listos para usar (algunos de ellos bastante ricos en opciones), y todos ellos forman la línea de comandos. Donde es posible también Se devuelve PID. Las herramientas utilizadas son IEXPRESS, SCHTASKS, WScript.Shell, Win32_Process y JScript.Net
fuente
A pesar de que ya respondí esto, aquí hay otro enfoque. Lo diferente aquí es que el script por lotes puede ocultarse automáticamente durante su ejecución. Sin embargo, necesitará dos scripts adicionales: windowMode.bat y getCMDPid.bat (ambos contienen
.net
código). A continuación, cómo se puede usar:fuente
Tuve el mismo problema, pero lo descubrí:
Shell("filehere" & "parametersforbatchfilehere", vbHidden)
fuente
Empecé a tratar de resolver esto y nunca tuve éxito. Esto fue lo más cerca que llegué:
fuente
Necesitaba ocultar la ventana para un archivo por lotes llamado desde un menú contextual del explorador, y también necesitaba agregar comillas en el parámetro. Ninguna de las respuestas funcionó para mí, así que estoy agregando mi propia solución.
Tenía esto en el "comando" del registro para un menú contextual del explorador:
Entonces, para reemplazarlo, tuve que crear un vbs como este:
Guarde en un lugar como
C:\mypath\myscript.vbs
y llámelo así en el registro:Tenga en cuenta que la ruta .bat no puede tener espacios, así que reemplácela con el nombre de archivo 8.3. Entonces, por ejemplo
C:\Program Files\myprogram.bat
, debe ser referenciado comoC:\Progra~1\myprogram.bat
. Para ver el nombre de archivo 8.3 usedir /x
fuente
Estoy creado EjecutarAplicación para hacer un trabajo tal y usarlo en mi env producción, espero que sea ayuda.
La configuración como a continuación:
archivo: config.arg
Y lanzar en su
runapp.exe
lugar.fuente
Esto funciona para Windows 8 (posiblemente otros)
haga clic en aplicar
Haga clic en el acceso directo y se ejecutará, pero no lo verá :)
fuente