Domanda

Come posso eseguire un file CMD o .bat in modalità silenziosa? Sto cercando di impedire che l'interfaccia CMD venga mostrata all'utente.

È stato utile?

Soluzione

Nella domanda StackOverflow ho proposto un modo per eseguire un file batch in background ( nessuna finestra DOS visualizzata )

Questo dovrebbe rispondere alla tua domanda.

Eccolo:


Dal tuo primo script, chiama il tuo secondo script con la seguente riga:

wscript.exe invis.vbs run.bat %*

In realtà, stai chiamando uno script vbs con:

  • il [percorso] \ nome della tua sceneggiatura
  • tutti gli altri argomenti necessari al tuo script (% * )

Quindi, invis.vbs chiamerà il tuo script con Metodo Run () di Windows Script Host , che accetta:

  • intWindowStyle: 0 significa " finestre invisibili "
  • bWaitOnReturn: false significa che il tuo primo script non deve attendere il completamento del secondo script

Vedi la domanda per lo script invis.vbs completo:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
                                                         ^
                             means "invisible window" ---| 

Aggiornamento dopo il feedback di Tammen:

Se ci si trova in una sessione DOS e si desidera avviare un altro script "in background", un semplice / b (come dettagliato in stessa domanda di cui sopra ) può essere sufficiente:

  

Puoi usare start / b second.bat per avviare un secondo file batch in modo asincrono dal tuo primo che condivide la finestra del tuo primo.

Altri suggerimenti

Includi la frase

@echo off

proprio nella parte superiore del tuo script pipistrello.

Utilizza il convertitore avanzato da BAT a EXE da http://www.battoexeconverter.com

Questo ti permetterà di incorporare qualsiasi binario aggiuntivo con il tuo file batch in un unico EXE completamente silenzioso e il suo freeware

Penso che questa sia la soluzione più semplice e più breve per eseguire un file batch senza aprire la finestra DOS, può essere molto fonte di distrazione quando si desidera pianificare l'esecuzione periodica di una serie di comandi, quindi la finestra DOS continua ad apparire, qui è la tua soluzione. Utilizzare uno script VBS per chiamare il file batch ...

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

Copia le righe sopra in un editor e salva il file con estensione .VBS. Modifica il nome e il percorso del file .BAT di conseguenza.

Usa Bat To Exe Converter per fare questo

http://download.cnet.com/ Bat-To-Exe-Converter / 3000-2069_4-10555897.html
(Scegli Link per il download diretto )

1 - Apri Bat to Exe Converter, seleziona il tuo file Bat.
2 - Nel menu Opzioni selezionare " Applicazione invisibile " ;, quindi premere il pulsante di compilazione.

Fatto!

Prova SilentCMD . Questo è un piccolo programma freeware che esegue un file batch senza visualizzare la finestra del prompt dei comandi.

Se voglio eseguire il prompt dei comandi in modalità silenziosa, allora c'è un semplice comando vbs:

Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"

se volessi aprire un URL in cmd in silenzio , ecco un codice:

Set WshShell = WScript.CreateObject("WScript.Shell") 
Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0)
'wait 10 seconds
WScript.sleep 10000 
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"

Sono abbastanza fiducioso che mi piace questo metodo il migliore. Copia e incolla il codice qui sotto in un file .vbs. Da lì chiamerai il file batch ... quindi assicurati di modificare l'ultima riga per specificare il percorso e il nome del file batch (che dovrebbe contenere il file che desideri avviare o eseguire le azioni necessarie)

Const HIDDEN_WINDOW = 12 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set objStartup = objWMIService.Get("Win32_ProcessStartup") 

Set objConfig = objStartup.SpawnInstance_ 
objConfig.ShowWindow = HIDDEN_WINDOW 
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID)

Ha sicuramente funzionato per me. I commenti sono benvenuti :)

Sono stato creato RunApp per fare un simile lavoro e anche usarlo nel mio ambiente di produzione, spero che sia d'aiuto.

La configurazione come di seguito:

file: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

E avvia invece runapp.exe .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top