Come si esegue un file batch senza lanciare una "finestra di comando"?
Su Windows XP, posso eseguire un file batch (.bat o .cmd), tramite una scorciatoia, senza una “finestra nera”?
Su Windows XP, posso eseguire un file batch (.bat o .cmd), tramite una scorciatoia, senza una “finestra nera”?
Salvare quanto segue come wscript, per 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
è il valore intWindowStyle
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
Questa è solo una semplificazione della risposta di Shaji. Si può eseguire il proprio script batch attraverso uno script VBScript (.vbs) come questo:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
Questo eseguirà il file batch senza che venga mostrata alcuna finestra di comando.
Giusto per espandere le risposte “Usa Windows Scripting” (che considero migliori perché è già integrato) ecco come farlo usando un singolo script wrapper e passando il nome del file batch “reale” come parametro. Altri parametri saranno 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
``` ```
NoShell.vbs c:\foo\my_batch_file.bat
Quindi, ad esempio, salvate il file di cui sopra come NoShell.vbs
da qualche parte e poi chiamate:
&001 &001
Infine, se state cercando di eseguire questo da qualche parte che non capisce il file .vbs (come un “External Tools” in Visual Studio), vorrete chiamare C:\Windows\System32\wscript.exe
con il file vbs come primo parametro e il vostro file batch come secondo.
GPL open source gratuito “Create Hidden Process” http://www.commandline.co.uk/chp/
Microsoft Security Essentials, e probabilmente la maggior parte degli altri scanner antivirus/malware tratterà l'eseguibile, chp.exe, come un virus perché nasconde qualsiasi programma specificato dalla visualizzazione di una finestra o di un pulsante della barra delle applicazioni, proprio come fanno i virus.
Non è un virus. Non nasconde il processo di destinazione dalla visualizzazione nel task manager, ad esempio. E naturalmente il codice sorgente è incluso, così potete vedere che è molto piccolo e non fa altro che eseguire qualsiasi programma gli diate.
Non dovete nemmeno fidarvi che il chp.exe incluso sia stato davvero costruito da quel sorgente. Si può andare avanti e scartare il chp.exe incluso e compilare il proprio dal sorgente, e tutti gli strumenti necessari per farlo sono anche gratuiti e scaricabili.
Si può anche fare semplicemente una scorciatoia al file .bat o .cmd, quindi fare clic con il tasto destro del mouse sulla scorciatoia, Proprietà, scheda Shortcut, Esegui: Ridotto a icona. Poi, nelle attività pianificate, usare la scorciatoia invece del file .bat/.cmd direttamente. In questo modo si eviterà che si apra una finestra, ma apparirà comunque un pulsante della barra delle applicazioni.
Si può usare lo scripting delle finestre come AutoIt .
Come esempio, basta scriverlo nell'editor di script AutoIt. È abbastanza semplice
Run("C:\test\batchfile.bat", "", @SW_HIDE)
``` ```
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
Se si vuole eseguirlo in loop,
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
``` &001
Compilatelo come .exe - e avete finito.
* * * *
Allo stesso modo, in [ AutoHotkey ](https://autohotkey.com/):
&001
Soluzione semplice, senza l'utilizzo di programmi aggiuntivi.
Buona fortuna!
Usare Hidden Start (costa 20 dollari)
Hidden Start - Eseguire applicazioni e file batch senza una finestra di console o UAC Prompt
Le applicazioni di console e i file batch sono regolarmente eseguiti all'avvio di Windows o in un programma. Il principale inconveniente di questo è che ogni applicazione apre una finestra di console che sfarfalla sullo schermo. Hidden Start (o Hstart) è una leggera utilità a riga di comando che permette di eseguire applicazioni di console e file batch senza alcuna finestra in background, gestire l'elevazione dei privilegi UAC sotto Windows 7 e Vista, avviare più comandi in parallelo o in modo sincrono e molto altro ancora.