Se que este tema ya esta muy violado por internet xD.
Si ya lo sabes, entonces, ¿qué te impide buscarlo en Google para encontrar la solución al instante, antes de preguntar?.
Desde el propio Batch no puedes ocultar la ventana de la CMD, sin embargo, puedes correr un script intermediario como este, el cual ejecutará el proceso de CMD en modo oculto:
RunHidden.vbs' Run hidden process - VBS snippet by Elektro
proc = """" & WScript.Arguments(0) & """"
args = null
For x = 1 to (WScript.Arguments.Count - 1)
args = args & " " & """" & WScript.Arguments(x) & """"
Next
Call WScript.CreateObject("WScript.Shell").Run(proc & " " & args, 0, False)
Wscript.Quit(0)
+
Añadir esta entrada al registro del startup de Windows para iniciar el script de arriba pasándole como argumento el script.bat que quieres correr oculto:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Nombre de la entrada"="Wscript.exe \"C:\\Directorio\\RunHidden.vbs\" \"C:\\Directorio\\Script.bat\" \"%1\""
REG ADD "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /V "Nombre de la entrada" /D "Wscript.exe \"C:\Ruta de RunHidden.vbs\" \"C:\Ruta de Script.bat\" \"%%1\"" /F
Otras opciones alternativas serían utilizar aplicaciones de terceros como
CMDOW o
NirCMD, la diferencia entre usar esos programas y el script indicado arriba, es que de esta forma que he explicado no se llegará a mostrar ninguna ventana de la CMD (tampoco al correr wscript.exe).
...o también podrías utilizar cualquier
packer de archivos, como por ejemplo
ExeScript o simplemente
WinRAR (SFX).
Saludos