Eu tenho um script de "configuração" que executo de manhã que inicia todos os programas de que preciso. Agora, alguns deles precisam de configuração adicional do ambiente, então preciso envolvê-los em pequenos scripts BAT.
Como executo esse script no Windows XP em segundo plano?
CALL env-script.bat
executa-o de forma síncrona, ou seja, o script de configuração pode continuar somente depois que o comando no env-script termina.
START/B env-script.bat
executa outra instância do CMD.exe no mesmo prompt de comando, deixando-o em um estado realmente confuso (vejo a saída do CMD.exe aninhado, o teclado está morto por um tempo, o script não é executado).
START/B CMD env-script.bat
produz o mesmo resultado. Nenhuma das bandeiras no CMD parece corresponder à minha conta.
fonte
Dois anos, mas para completar ...
Abordagem padrão em linha: (ou seja, o comportamento que você obteria ao usar
&
no Linux)Observações: 1.
CALL
está emparelhado com o arquivo .bat porque é para onde ele geralmente vai .. (ou seja, é apenas uma extensão doCMD /C CALL "foo.bat"
formulário para torná-lo assíncrono. Normalmente, é necessário obter códigos de saída corretamente, mas isso não é um problema aqui.); 2. Aspas duplas ao redor do arquivo .bat são necessárias apenas se o nome contiver espaços. (O nome pode ser um caminho, caso em que há mais probabilidade disso.).Se você não quiser a saída:
Se você quiser que o bat seja executado em um console independente: (ou seja, outra janela)
Se você quiser que a outra janela fique por perto depois:
Nota: Na verdade, este é um formato ruim, a menos que você tenha usuários que desejem especificamente usar a janela aberta como um console normal. Se você quiser apenas que a janela fique por perto para ver a saída, é melhor colocar um
PAUSE
no final do arquivo bat. Ou ainda, adicione^& PAUSE
após a linha de comando:fonte
&
é um operador "e então" (terminologia?). (por exemplo,cmd1 & cmd2
significa "cmd1" e depois "cmd2". Ao contrário do&&
operador, a execução de "cmd2" não depende da saída bem-sucedida de "cmd1".) O^
escapa de&
para que vá para os argumentos do CMD em vez de ser consumido e executado pelo mesmo console que executou START.start
ecmd
não deu a funcionalidade completa que procurava. Sua resposta acerta.START /B "" CMD /C "foo.bat" [args [...]] ^>nul 2^>^&1
START /B "" CMD /C PING 127.0.0.1 >NUL
parece funcionar de qualquer maneira e nada é produzido. (Provavelmente porqueCMD
herdaSTART
as alças de E / S.) Acho que a diferença é se você deseja manterSTART
a saída (de erro) intacta, o que provavelmente é uma boa ideia.CALL
está lá porque achei que é uma boa prática manter. (ou seja, não usarCALL
para chamadas de morcego síncronas resultará em códigos de saída imprevisíveis, por isso emparelhei consistentemente chamadas de morcego,CALL
mesmo quando não se aplica estritamente, como neste caso.)Como START é a única maneira de executar algo em segundo plano a partir de um script CMD, recomendo que você continue usando. Em vez do modificador / B, tente / MIN para que a janela recém-criada não o incomode. Além disso, você pode definir a prioridade para algo mais baixo com / LOW ou / BELOWNORMAL, o que deve melhorar a capacidade de resposta do sistema.
fonte
Diferente do termo de primeiro plano / plano de fundo. Outra forma de ocultar a janela em execução é via vbscript, se ainda estiver disponível em seu sistema.
nomeie-o como sth.vbs e chame-o do bastão, coloque em tarefa planejada, etc. Pessoalmente, irei desativar o vbs sem pressa em qualquer sistema Windows que eu gerenciar :)
fonte
Crie um novo aplicativo C # do Windows e chame este método de main:
fonte
Isso funciona na minha instalação do Windows XP Home, do jeito Unix:
fonte
Na verdade, é bem fácil com esta opção no final:
fonte
start
não tem-WindowStyle
opção.C:` instead of
C: \ Windows`) sugere que ele encontrou uma ferramenta em algum lugar da Internet e copiou em seu disco rígido.