Sei que essa pergunta já foi respondida com uma resolução perfeitamente boa, nativa do Windows e, portanto, deve ser a mais compatível, e concordo completamente.
Eu também queria dizer que não concordo com o comentário de @ splattne (mas não com a resposta real) - que a resolução no outro segmento mencionado merece o crédito. Essa resposta envolve a execução do script como um usuário diferente (SYSTEM), que é praticamente o equivalente a dar acesso à raiz do script. Ele também falhará em trabalhos como ROBOCOPY
(como mencionado por John Rennie), que exigem acesso à rede.
Eu nunca tentei CMDOW
antes, mas gostaria de oferecer outra resolução semelhante, que [embora não esteja instalada nativamente no Windows] ainda é altamente portátil para a maioria das versões e vem nas versões de 32 e 64 bits, e isso é NirCmd .
O NirCmd é uma ferramenta muito poderosa que possui inúmeras opções, das quais a mais útil é pessoalmente a capacidade de iniciar janelas de comando ocultas, executando simplesmente o seguinte:
c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"
Na exec
seção Referência do comando NirCmd :
exec [show/hide/min/max] [application + command-line]
Executa um aplicativo e, opcionalmente, especifica um ou mais parâmetros de linha de comando para o aplicativo executado. O parâmetro [show / hide / min / max] especifica se o aplicativo em execução será visível ou não. Se 'ocultar' for especificado, o aplicativo em execução não estará visível para o usuário. Se 'max' for especificado, a janela do aplicativo em execução será maximizada. Se 'min' for especificado, a janela do aplicativo em execução será minimizada.
Edição:
Eu estava tentando executar um ROBOCOPY
trabalho e tentei o método nesta resposta, e não funcionou, mesmo depois de editar os privilégios de acesso à rede. Tentei clicar duas vezes no script e não consegui fazê-lo funcionar, mas só consegui executá-lo em um prompt de comando elevado. Eu criei um atalho para o arquivo em lotes e o execute como administrador e consegui executá-lo clicando duas vezes nele, mas o método com o qual acabei indo foi executá-lo oculto como SYSTEM (eu sei, eu sei) - mas funciona ROBOCOPY
, pelo que vale, desde que o arquivo em lotes tenha as permissões corretas.
EDIT 2:
Por algum motivo, ele não funcionaria como SYSTEM (provavelmente o acesso à rede mencionado anteriormente) - só notei isso depois de executar ROBOCOPY
sem o sinalizador / L, que é basicamente apenas uma simulação e [aparentemente] não funciona. na verdade, conecto-me ao sistema remoto, mas quando executo o arquivo em lotes com os maiores privilégios e marque a caixa oculta, ainda posso executá-lo como usuário logado em segundo plano, sem uma janela de comando, por qualquer valor que isso valha a alguém .