Como executar um arquivo de lote sem iniciar uma “janela de comando”? [duplicado]

122

No Windows XP, posso executar um arquivo em lote (.bat ou .cmd) por meio de um atalho, sem uma "janela preta"?

    
por dugres 11.05.2010 / 19:31

9 respostas

83

Salve o seguinte como wscript, por exemplo, hidecmd.vbs após substituir "testing.bat" pelo nome do seu arquivo de lote.

Set oShell = CreateObject ("Wscript.Shell") 
Dim strArgs
strArgs = "cmd /c testing.bat"
oShell.Run strArgs, 0, false

O segundo parâmetro do valor oShell.Run é intWindowStyle indicando a aparência da janela do programa e o valor zero é para a janela oculta.

A referência está aqui link

    
por 11.05.2010 / 21:55
41

Esta é apenas uma simplificação da resposta de Shaji. Você pode executar seu script em lote por meio de um script VBScript (.vbs) como este:

'HideBat.vbs
CreateObject("Wscript.Shell").Run "your_batch_file.bat", 0, True

Isto irá executar o seu arquivo de lote sem nenhuma janela de comando mostrada.

    
por 15.02.2012 / 10:52
19

Apenas para expandir as respostas "Usar o Windows Scripting" (que considero melhor já que já está incorporado), veja como fazer isso usando um único script de wrapper e passando o nome do arquivo de lote "real" como um parâmetro. Parâmetros adicionais serão passados para o arquivo em lotes.

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

Então, por exemplo salve o arquivo acima como NoShell.vbs em algum lugar e chame:

NoShell.vbs c:\foo\my_batch_file.bat

Por fim, se você quiser executar isso de algum lugar que não entenda o arquivo .vbs (como "Ferramentas Externas" no Visual Studio), convém chamar C:\Windows\System32\wscript.exe com o arquivo vbs como seu primeiro parâmetro e seu arquivo de lote como o segundo.

    
por 10.01.2014 / 18:50
9

Você pode alterar as propriedades do atalho para executar minimizadas.

Para executá-lo de forma totalmente invisível, você precisará de algo como o Windows Scripting.

    
por 11.05.2010 / 21:50
8

Use comece com a opção '/ B'. Por exemplo:

@echo off
start /B go.bat
    
por 11.05.2010 / 19:36
6

Código aberto gratuito da GPL "Criar um processo oculto"

link

O Microsoft Security Essentials, e provavelmente a maioria dos outros verificadores de vírus / malwares, tratará o executável chp.exe como um vírus, pois oculta qualquer programa que você especifique ao exibir uma janela ou um botão da barra de tarefas, da mesma forma que os vírus. / p>

Não é um vírus. Ele não oculta o processo de destino de aparecer no gerenciador de tarefas, por exemplo. E, claro, o código-fonte está incluído para que você possa ver que ele é muito pequeno e não faz nada além de executar qualquer programa que você der.

Você nem precisa confiar que o chp.exe incluído realmente foi criado 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 isso são gratuitas e podem ser baixadas.

Você também pode apenas criar um atalho para o arquivo .bat ou .cmd, clicar com o botão direito do mouse no atalho, Propriedades, guia Atalho, Executar: Minimizado. Em tarefas agendadas, use o atalho em vez do arquivo .bat / .cmd diretamente. Isso impedirá que uma janela apareça, mas um botão da barra de tarefas continuará aparecendo.

    
por 22.10.2012 / 23:17
5

Use Início oculto (custa US $ 20)

Hidden Start - Run Applications and Batch Files without a Console Window or UAC Prompt

Console applications and batch files are regularly run at Windows startup or in a schedule. The main inconvenience of this is that each application opens a console window that flickers on the screen. Hidden Start (or Hstart) is a lightweight command line utility that allows you to run console applications and batch files without any window in the background, handle UAC privilege elevation under Windows 7 and Vista, start multiple commands in parallel or synchronously, and much more.

enter image description here

    
por 12.05.2010 / 18:03
5

Você pode usar scripts de janela, como AutoIt .

Como exemplo, apenas escreva isso no editor de scripts AutoIt. É bastante simples

Run("C:\test\batchfile.bat", "", @SW_HIDE)

Se você quiser executá-lo em um loop,

$x=0
Do
 Run("C:\test\batchfile.bat", "", @SW_HIDE)
 Sleep(5000)
Until $x = 1

Compile como .exe - e pronto.

Da mesma forma, em AutoHotkey :

#NoTrayIcon ; To prevent momentary icon pop-up
run whatever.bat arg1 arg2,,hide 
    
por 29.05.2013 / 05:48
4

Solução simples, sem usar nenhum programa extra.

  1. Crie o arquivo em lote que você deseja executar e teste-o.
  2. Cria um atalho para isso!
  3. Edite as propriedades do atalho: na guia Atalho, escolha Executar Minimizado. Assegurando uma tecla de atalho para ela e para o seu feito!

Boa sorte!

    
por 27.10.2014 / 09:23