2010-05-11 17:31:57 +0000 2010-05-11 17:31:57 +0000
134
134

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”?

Risposte (9)

88
88
88
2010-05-11 19:55:49 +0000

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

45
45
45
2012-02-15 09:52:03 +0000

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.

21
21
21
2014-01-10 17:50:44 +0000

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.

9
9
9
2010-05-11 19:50:45 +0000

È possibile modificare le proprietà della scorciatoia per eseguirla al minimo.

Per eseguirla in modo completamente invisibile avrete bisogno di qualcos'altro, come Windows Scripting.

9
9
9
2010-05-11 17:36:13 +0000

Usare start con l'opzione ‘/B’. Per esempio:

@echo off
start /B go.bat
6
6
6
2012-10-22 21:17:19 +0000

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.

6
6
6
2013-05-29 03:48:54 +0000

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
6
6
6
2014-10-27 08:23:11 +0000

Soluzione semplice, senza l'utilizzo di programmi aggiuntivi.

  1. 1. Creare il file batch che si desidera eseguire e testarlo.
  2. 2. Creare una scorciatoia per esso.
  3. 3. Modificare le proprietà della scorciatoia: nella scheda Scorciatoia, scegliere Esegui ridotto a icona. Assegnare un tasto di scelta rapida e il gioco è fatto!

Buona fortuna!

5
5
5
2010-05-12 16:03:41 +0000

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.