Questa domanda ha già una risposta qui:
Su Windows XP, posso eseguire un file batch (.bat o .cmd), tramite un collegamento, senza una "finestra nera"?
Questa domanda ha già una risposta qui:
Su Windows XP, posso eseguire un file batch (.bat o .cmd), tramite un collegamento, senza una "finestra nera"?
Risposte:
Salvare quanto segue come wscript, ad esempio hidecmd.vbs dopo aver sostituito "testing.bat" con il nome del file batch.
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
Il secondo parametro di oShell.Run
è intWindowStyle
valore che indica l'aspetto della finestra del programma e il valore zero è per la finestra nascosta.
Il riferimento è qui http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
.bat
file come administartor usando questo metodo?
Questa è solo una semplificazione della risposta di Shaji. È possibile eseguire lo script batch tramite uno script VBScript (.vbs) in questo modo:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
Ciò eseguirà il file batch senza la finestra di comando mostrata.
.bat
file come amministratore usando questo metodo?
Solo per espandere le risposte "Usa script di Windows" (che considero migliore perché è già incorporato) ecco come farlo usando un singolo script wrapper e passando il nome del file batch "reale" come parametro. Parametri aggiuntivi verranno passati al file batch.
If WScript.Arguments.Count >= 1 Then
ReDim arr(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
Arg = WScript.Arguments(i)
If InStr(Arg, " ") > 0 Then Arg = """" & Arg & """"
arr(i) = Arg
Next
RunCmd = Join(arr)
CreateObject("Wscript.Shell").Run RunCmd, 0, True
End If
Ad esempio, salva il file sopra come NoShell.vbs
da qualche parte quindi chiama:
NoShell.vbs c:\foo\my_batch_file.bat
Infine, se stai cercando di eseguirlo da qualche parte che non comprende il file .vbs (come un "Strumenti esterni" in Visual Studio), ti consigliamo di chiamare C:\Windows\System32\wscript.exe
con il file vbs come primo parametro e il tuo file batch come il secondo.
"C:\My Files\HideCmd.vbs" c:\foo\my_batch_file.bat
.
"C:\My Files\HideCmd.vbs" c:\my things\my_batch_file.bat
. Non importa cosa provo per il percorso: doppie virgolette attorno a tutto,% 20 al posto dello spazio o una combinazione di quei due, nulla funziona. Ricevo un messaggio di errore che mi dice che il file non può essere trovato o non succede nulla. Ciò è dovuto a un errore dell'utente da parte mia, a una limitazione di Windows con il campo Destinazione per i collegamenti o a un problema con lo script vbs in cui non gestisce correttamente i percorsi dei file con spazi?
È possibile modificare le proprietà del collegamento per l'esecuzione in modalità ridotta.
Per eseguirlo completamente invisibilmente avrai bisogno di qualcos'altro, come Windows Scripting.
Utilizzare start con l'opzione '/ B'. Per esempio:
@echo off
start /B go.bat
start /b
eseguirà semplicemente il programma nella console attualmente allocata invece di generarne una nuova. Ne otterrai uno nuovo poiché il batch deve essere eseguito con cmd (che, a sua volta [sorpresa], apre una console).
SYSTEM
in C / C ++).
cmd /c foo.cmd
. Non c'è assolutamente bisogno di usare start
in quegli scenari e, direi che system
non dovrebbe essere usato a favore CreateProcess
. Avviando un file batch, sei già dipendente da una piattaforma, potresti anche utilizzare gli strumenti migliori per il lavoro.
cmd /c
prima. Il comando cmd è quello di cui avevo bisogno nel mio caso, ma tutte le risposte di stackexchange che ho trovato finora, su un file batch che esegue un altro file batch, hanno le risposte migliori per usare start ...
start /b go.bat
non allocherà una nuova console (cioè un'istanza di conhost.exe - o un thread in csrss.exe prima di Windows 7). Tuttavia creerà un pasticcio poiché lo script batch viene eseguito con una nuova istanza di cmd.exe collegata alla stessa console . Entrambe le istanze della shell competeranno per leggere l'input dalla console, in genere alternato. Ha bisogno /w
(ad esempio start /b /w go.bat
) per attendere la seconda istanza, che è simile all'utilizzo cmd /c
se si utilizza system
. Inoltre, se stai chiamando CreateProcess
, esegui go.bat
direttamente. Non ce n'è bisogno cmd /c
.
Open source GPL gratuito "Crea processo nascosto"
http://www.commandline.co.uk/chp/
Microsoft Security Essentials e probabilmente la maggior parte degli altri scanner per virus / malware tratteranno l'eseguibile, chp.exe, come un virus perché nasconde qualsiasi programma specificato dalla visualizzazione di una finestra o di un pulsante della barra delle attività, proprio come fanno i virus.
Non è un virus. Ad esempio, non nasconde il processo di destinazione in Gestione attività. E ovviamente il codice sorgente è incluso in modo da poter vedere che è molto piccolo e non fa altro che eseguire qualsiasi programma gli dai.
Non devi nemmeno fidarti che il chp.exe incluso sia stato davvero creato da quella fonte. Puoi andare avanti e scartare il chp.exe incluso e compilare il tuo dal sorgente, e tutti gli strumenti necessari per farlo sono anche gratuiti e scaricabili.
È anche possibile creare un collegamento al file .bat o .cmd, quindi fare clic con il tasto destro del mouse sul collegamento, Proprietà, scheda Collegamento, Esegui: ridotto a icona. Quindi, nelle attività pianificate, utilizzare direttamente il collegamento anziché il file .bat / .cmd. Ciò impedirà la comparsa di una finestra, ma verrà comunque visualizzato un pulsante della barra delle applicazioni.
È possibile utilizzare gli script di finestre come AutoIt .
Ad esempio, basta scrivere questo nell'editor di script AutoIt. È abbastanza semplice
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Se vuoi eseguirlo in un ciclo,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
Compilalo come .exe e il gioco è fatto.
Allo stesso modo, in AutoHotkey :
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
Usa Hidden Start (costa $ 20)
Avvio nascosto - Esegui applicazioni e file batch senza una finestra della console o un prompt UAC
Le applicazioni della console e i file batch vengono eseguiti regolarmente all'avvio di Windows o in base a una pianificazione. Il principale inconveniente è che ogni applicazione apre una finestra della console che sfarfalla sullo schermo. Hidden Start (o Hstart) è un'utilità a riga di comando leggera che consente di eseguire applicazioni console e file batch senza alcuna finestra in background, gestire l'elevazione dei privilegi UAC in Windows 7 e Vista, avviare più comandi in parallelo o in modo sincrono e molto altro ancora .
Soluzione semplice, senza utilizzare alcun programma aggiuntivo.
In bocca al lupo!