Pergunta

Como posso executar um CMD ou .bat arquivo no modo silencioso? Eu estou olhando para evitar a interface CMD de ser mostrado para o usuário.

Foi útil?

Solução

propus em questão StackOverflow uma maneira de executar um arquivo de lote em segundo plano ( sem janelas DOS exibidos )

Isso deve responder a sua pergunta.

Aqui está:


A partir do seu primeiro roteiro, ligue para o segundo script com a seguinte linha:

wscript.exe invis.vbs run.bat %*

Na verdade, você está chamando um script vbs com:

  • o [caminho] \ nome do seu script
  • todos os outros argumentos necessários para o seu roteiro (%*)

Então, invis.vbs irá chamar seu script com o Windows Script host Run () método, que leva:

  • intWindowStyle: 0 significa "janelas invisíveis"
  • bWaitOnReturn: false significa o seu primeiro script não precisam esperar para o seu segundo script ao fim

Veja a pergunta para o script invis.vbs completos:

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
                                                         ^
                             means "invisible window" ---| 

Atualização após o feedback do Tammen:

Se você estiver em uma sessão DOS e que pretende lançar um outro script "em segundo plano", um /b simples (como detalhado no mesma referido questão) pode ser o suficiente:

Você pode usar start /b second.bat para abrir um segundo arquivo de lote de forma assíncrona a partir do seu primeiro que as ações da janela do seu primeiro um.

Outras dicas

Incluir a frase

@echo off

no topo do seu script de morcego.

Use avançada BAT para EXE conversor de http://www.battoexeconverter.com

Isso permitirá que você para incorporar quaisquer binários adicionais com o seu arquivo de lote para um ficar sozinho completamente silencioso EXE e sua gratuito

Eu acho que esta é a solução mais fácil e mais curto para a execução de um arquivo de lote sem abrir a janela do DOS, ele pode ser muito perturbador quando você deseja agendar um conjunto de comandos para serem executados periodicamente, de modo a janela do DOS continua aparecendo, aqui é a sua solução. Use um script VBS para chamar o arquivo de lote ...

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

Copiar as linhas acima para um editor e salve o arquivo com extensão .vbs. Editar o nome do arquivo .BAT e caminho em conformidade.

Use Bat To Exe Converter para fazer isso

http://download.cnet.com/ Bat-To-Exe-Converter / 3000-2069_4-10555897.html
(Escolha direto download link )

1 - Open Bat To Exe Converter, selecione o arquivo de Bat
. 2 - No menu Opções, selecione "Aplicação Invisível", em seguida, pressione o botão de compilação.

Feito!

Tente SilentCMD . Este é um pequeno programa freeware que executa um arquivo de lote sem exibir a janela do prompt de comando.

Se eu quero correr promt de comando no modo silencioso, então não há um comando simples vbs:

Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"

se eu queria abrir uma url em cmd silenciosamente , então aqui é um código:

Set WshShell = WScript.CreateObject("WScript.Shell") 
Return = WshShell.Run("iexplore.exe http://otaxi.ge/log/index.php", 0)
'wait 10 seconds
WScript.sleep 10000 
Set ws=CreateObject("WScript.Shell")
ws.Run "TASKKILL.exe /F /IM iexplore.exe"

Estou bastante confiante de que como este método o melhor. Copie e cole o código abaixo em um arquivo .vbs. De lá você vai chamar o arquivo de lote ... por isso certifique-se de editar a última linha para especificar o caminho eo nome do arquivo de lote (que deve conter o arquivo que você gostaria de iniciar ou executar as ações que você precisa realizados)

Const HIDDEN_WINDOW = 12 

strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set objStartup = objWMIService.Get("Win32_ProcessStartup") 

Set objConfig = objStartup.SpawnInstance_ 
objConfig.ShowWindow = HIDDEN_WINDOW 
Set objProcess = GetObject("winmgmts:root\cimv2:Win32_Process") 
errReturn = objProcess.Create("C:\PathOfFile\name.bat", null, objConfig, intProcessID)

Ele definitivamente funcionou para mim. Comentários são bem-vindas:)

Estou criado ExecutarAplicação para fazer tal trabalho de um e também usá-lo no meu env produção, espero que seja ajuda.

A configuração como abaixo:

arquivo: config.arg

:style:hidden

MyBatchFile.bat
arg1
arg2

E lançamento runapp.exe vez.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top