Como executar um ficheiro batch sem abrir uma "janela de comandos"?
No Windows XP, posso executar um ficheiro batch (.bat ou .cmd), através de um atalho, sem uma “janela preta”?
No Windows XP, posso executar um ficheiro batch (.bat ou .cmd), através de um atalho, sem uma “janela preta”?
Guarde o seguinte como wscript, por exemplo, hidecmd.vbs após substituir “testing.bat” pelo nome do seu ficheiro de lote.
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false
O segundo parâmetro de oShell.Run
é o valor de intWindowStyle
indicando o aparecimento da janela do programa e o valor zero é para janela oculta.
A referência está aqui http://msdn.microsoft.com/en-us/library/d5fk67ky.aspx
Isto é apenas uma simplificação da resposta de Shaji. Pode correr o seu script batch através de um script VBScript (.vbs) como este:
'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True
Isto irá executar o seu ficheiro batch sem nenhuma janela de comandos mostrada.
Apenas para expandir as respostas “Use Windows Scripting” (que eu considero melhor porque já está embutido) aqui está como fazê-lo usando um único script de embalagem e passando o nome do arquivo “real” do lote como um parâmetro. Parâmetros adicionais serão passados para o ficheiro 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
Por exemplo, guarde o ficheiro acima como NoShell.vbs
algures e depois chame:
NoShell.vbs c:\foo\my_batch_file.bat
Finalmente, se estiver a procurar executar isto a partir de algum lugar que não compreenda o ficheiro .vbs (tal como um “External Tools” no Visual Studio), vai querer chamar C:\Windows\System32\wscript.exe
com o ficheiro vbs como primeiro parâmetro e o seu ficheiro batch como segundo.
Free GPL open source “Create Hidden Process” http://www.commandline.co.uk/chp/
Microsoft Security Essentials, e provavelmente a maioria dos outros scanners de vírus/malware irão tratar o executável, chp.exe, como um vírus porque esconde qualquer programa que você especificar a partir da exibição de uma janela ou botão de barra de tarefas, assim como os vírus fazem.
Não é um vírus. Ele não esconde o processo alvo de aparecer no gerenciador de tarefas, por exemplo. E claro que o código fonte está incluído para que você possa ver que é muito pequeno e não faz nada a não ser correr o programa que lhe der.
Nem precisa de confiar que o chp.exe incluído foi realmente construído a partir dessa fonte. Você pode ir em frente e descartar o chp.exe incluído e compilar o seu próprio a partir do código fonte, e todas as ferramentas necessárias para fazer isso são até gratuitas e para download.
Você também pode apenas fazer um atalho para o arquivo .bat ou .cmd, depois clique com o botão direito no atalho, Properties, Shortcut tab, Run: Minimizado. Depois em tarefas agendadas, utilize o atalho em vez do ficheiro .bat/.cmd directamente. Isso evitará que uma janela apareça, mas um botão da barra de tarefas continuará a aparecer.
Você pode usar scripts de janela como AutoIt .
Como exemplo, basta escrever isto para o editor de scripts AutoIt. É bastante simples
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Se quiser executá-lo em loop,
$x=0
Do
Run("C:\test\batchfile.bat", "", @SW_HIDE)
Sleep(5000)
Until $x = 1
Compile-o como .exe - e está feito.
Da mesma forma, em AutoHotkey :
#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide
Solução simples, sem utilização de qualquer programa extra.
Boa sorte!
Utilize Hidden Start (custa $20)
Hidden Start - Run Applications and Batch Files without a Console Window or UAC Prompt
As aplicações de consola e os ficheiros batch são regularmente executados no arranque do Windows ou numa agenda. O principal inconveniente disto é que cada aplicação abre uma janela de consola que cintila no ecrã. Hidden Start (ou Hstart) é um utilitário de linha de comando leve que lhe permite executar aplicações de consola e ficheiros em lote sem qualquer janela em segundo plano, lidar com a elevação de privilégios UAC sob Windows 7 e Vista, iniciar vários comandos em paralelo ou sincronizado, e muito mais.