No momento, meu arquivo em lotes fica assim:
myprogram.exe param1
O programa inicia, mas a janela do DOS permanece aberta. Como posso fechá-lo?
No momento, meu arquivo em lotes fica assim:
myprogram.exe param1
O programa inicia, mas a janela do DOS permanece aberta. Como posso fechá-lo?
Respostas:
Você pode usar a palavra-chave exit. Aqui está um exemplo de um dos meus arquivos em lotes:
start myProgram.exe param1
exit
exit
um arquivo em lotes.
start "VPN" "C:\Program Files (x86)\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"
Use o comando start para impedir que o arquivo em lotes aguarde o programa. Lembre-se de colocar aspas duplas vazias na frente do programa que você deseja executar após "Iniciar". Por exemplo, se você deseja executar o Visual Studio 2012 a partir de um comando em lote:
Start "" "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"
observe as aspas duplas após o início.
start <window name> <program name>
Veja o comando START, você pode fazer isso:
START rest-of-your-program-name
Por exemplo, este arquivo em lotes aguardará até o bloco de notas sair:
@echo off
notepad c:\test.txt
No entanto, isso não vai:
@echo off
start notepad c:\test.txt
Da minha própria pergunta :
start /b myProgram.exe params...
funciona se você iniciar o programa a partir de uma sessão do DOS existente.
Caso contrário, chame um script vb
wscript.exe invis.vbs myProgram.exe %*
O método Windows Script Host Run () leva:
Aqui está o invis.vbs:
set args = WScript.Arguments
num = args.Count
if num = 0 then
WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
WScript.Quit 1
end if
sargs = ""
if num > 1 then
sargs = " "
for k = 1 to num - 1
anArg = args.Item(k)
sargs = sargs & anArg & " "
next
end if
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False
Esta é a única coisa que funcionou para mim quando tentei executar uma classe java a partir de um arquivo em lotes:
start "cmdWindowTitle" /B "javaw" -cp . testprojectpak.MainForm
Você pode personalizar o start
comando como desejar para o seu projeto, seguindo a sintaxe apropriada:
Syntax
START "title" [/Dpath] [options] "command" [parameters]
Key:
title : Text for the CMD window title bar (required)
path : Starting directory
command : The command, batch file or executable program to run
parameters : The parameters passed to the command
Options:
/MIN : Minimized
/MAX : Maximized
/WAIT : Start application and wait for it to terminate
/LOW : Use IDLE priority class
/NORMAL : Use NORMAL priority class
/HIGH : Use HIGH priority class
/REALTIME : Use REALTIME priority class
/B : Start application without creating a new window. In this case
^C will be ignored - leaving ^Break as the only way to
interrupt the application
/I : Ignore any changes to the current environment.
Options for 16-bit WINDOWS programs only
/SEPARATE Start in separate memory space (more robust)
/SHARED Start in shared memory space (default)
Você deveria tentar isso. Inicia o programa sem janela. Na verdade, pisca por um segundo, mas desaparece rapidamente.
start "name" /B myprogram.exe param1
"title"
opção é importante. Se o caminho do programa incluir espaços, ele deverá ser delimitado por aspas, portanto, será necessário adicionar "title"
para evitar falhas.
Como resolver o "problema de espaço" e dependências locais:
@echo off
cd "C:\Program Files\HeidiSQL"
start heidisql.exe
cd "C:\Program Files (x86)\Google\Chrome\Application"
start chrome.exe
exit
Já existem muitas respostas para esta pergunta, mas estou postando isso para esclarecer algo importante, embora isso nem sempre seja o caso:
Start "C:\Program Files\someprog.exe"
Pode causar problemas em algumas versões do Windows, pois Start
na verdade espera que o primeiro conjunto de aspas seja um título do Windows. Portanto, é recomendável primeiro citar duas vezes um comentário ou um comentário em branco:
Start "" "C:\Program Files\someprog.exe"
ou
Start "Window Title" "C:\Program Files\someprog.exe"
Minha solução para fazer isso na GUI:
Crie um atalho para o programa que você deseja executar;
Edite as propriedades do atalho;
Mude o TARGET
campo para %COMSPEC% /C "START "" "PROGRAMNAME""
;
Mude o RUN
campo para minimizado.
Pronto! Veja como você gosta...
PS: Os parâmetros do programa podem ser inseridos entre as duas aspas finais; a PROGRAMNAME
cadeia pode ser um nome de arquivo, um caminho relativo ou um caminho absoluto - se você inserir um caminho absoluto e apagar a letra e o ponto-e-vírgula da unidade, isso funcionará em um pendrive, independentemente da letra que o computador host atribuir a ela. . (também, se você colocar o atalho na mesma pasta e preceder o nome do arquivo do programa PROGRAMNAME
com a %CD%
variável, os caminhos sempre corresponderão; o mesmo truque pode ser usado no START IN
campo).
Se esse arquivo em lotes for algo que você deseja executar como agendado ou sempre; você pode usar a ferramenta de agendamento do Windows e ela não se abre em uma janela quando inicia o arquivo em lotes.
Para abrir Task Scheduler
:
'cmd'
taskschd.msc
-> enterNo lado direito, clique Create Basic Task
e siga os menus.
Espero que isto ajude.
Aqui está a minha solução preferida. É retirado de uma resposta a uma pergunta semelhante.
Use um script VBS para chamar o arquivo em lotes:
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\path\to\your\batchfile.bat" & Chr(34), 0
Set WshShell = Nothing
Copie as linhas acima para um editor e salve o arquivo com extensão .VBS.