Esecuzione di un CMD o BAT in modalità silenziosa

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

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

Questo dovrebbe rispondere alla tua domanda.

Ecco qui:


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 del tuo script
  • tutti gli altri argomenti necessari al tuo script ( %* )

Quindi, invis.vbs chiamerà il tuo script con il metodo Windows Script Host Run () , che richiede:

  • intWindowStyle: 0 significa “windows invisibili”
  • bWaitOnReturn: false significa che il tuo primo script non ha bisogno di attendere il completamento del tuo secondo script

Vedi la domanda per lo script completo invis.vbs:

 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 descritto nella stessa domanda precedente ) può essere sufficiente:

È ansible utilizzare start /b second.bat per avviare un secondo file batch in modo asincrono dal primo che condivide la finestra del primo.

Includi la frase

@echo off

proprio nella parte superiore del tuo script di pipistrello.

Utilizzare Advanced BAT to EXE Converter da http://www.battoexeconverter.com

Ciò ti consentirà di incorporare eventuali binari aggiuntivi con il tuo file batch in un solo EXE completamente autonomo e il suo freeware

Penso che questa sia la soluzione più semplice e più rapida per eseguire un file batch senza aprire la finestra DOS, può essere molto fastidioso quando si desidera pianificare un insieme di comandi da eseguire periodicamente, quindi la finestra DOS continua a spuntare, ecco la 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 a un editor e salva il file con estensione .VBS. Modificare di conseguenza il nome e il percorso del file .BAT.

Usa il convertitore Bat To Exe per farlo

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

1 – Apri il convertitore Bat to Exe, seleziona il tuo file Bat.
2 – Nel menu Opzioni selezionare “Applicazione invisibile”, quindi premere il tasto Compila.

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 comando promt 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 , allora 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 i benvenuti 🙂

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

La configurazione come di seguito:

file: config.arg

 :style:hidden MyBatchFile.bat arg1 arg2 

E lanciare runapp.exe invece.