Executando um CMD ou BAT no modo silencioso
-
03-07-2019 - |
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.
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.