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

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

Respostas (9)

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

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

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

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.

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

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.

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

Pode alterar as propriedades do atalho para correr minimizado.

Para o correr de forma completamente invisível vai precisar de algo mais, como o Windows Scripting.

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

Utilize start com a opção ‘/B’. Por exemplo:

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

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.

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

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

Solução simples, sem utilização de qualquer programa extra.

  1. Crie o ficheiro batch que pretende executar e teste-o.
  2. Crie um atalho para ele.
  3. Edite as propriedades do atalho: no separador Atalho, escolha Run Minimized. Atribua-lhe uma tecla de atalho e já está!

Boa sorte!

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

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.