Questão Execute um arquivo em lote de uma maneira completamente oculta


Eu estou procurando alguma maneira de executar um arquivo de lote (. Bat) sem nada visível para o usuário (sem janela, sem nome da barra de tarefas, .etc ..).

Eu não quero usar algum programa para fazer isso, estou procurando algo mais limpo. encontrei uma solução que usa o VBScript, mas também não gosto de usar o VBS.


113


origem


Haha! Definitivamente não. Eu estou desenvolvendo um serviço do Windows que irá executar um arquivo de lote de vez em quando. - Moayad Mardini
Os serviços do Windows não são executados como arquivos em lote. Eles correm como serviços. Você precisa esclarecer a questão - como está escrito e com comentários, não faz sentido para mim. - CarlF
Eu tenho um serviço do Windows que executa arquivos em lotes. Não que o serviço seja um arquivo em lotes. - Moayad Mardini
Em que idioma você está escrevendo seu serviço? - Hugh Allen
também há hstart. - barlop


Respostas:


Solução 1: 

Salvar esta linha de texto como arquivo invisible.vbs:

CreateObject ("Wscript.Shell"). Execute "" ""   & WScript.Arguments (0) & "" "", 0,   Falso

Para executar qualquer programa ou arquivo em lote de forma invisível, use-o da seguinte maneira:

wscript.exe   "C: \ Wherever \ invisible.vbs" "C: \ Alguns   Outro local \ MyBatchFile.bat "

Para também ser capaz de passar / retransmitir uma lista de argumentos, use apenas duas aspas duplas

CreateObject ("Wscript.Shell"). Execute ""   & WScript.Arguments (0) & "", 0,   Falso

Exemplo: Invisible.vbs "Kill.vbs ME.exe"

Solução 2:

Use uma ferramenta de linha de comando para iniciar um processo silenciosamente: Quieto, hidecon ou hideexec.


94



Por que 4 aspas duplas, você poderia por favor explicar? - Starx
E se precisássemos começar um programa escondido? - Starx
Sintaxe @Starx VB. & significa concatenar cadeias. As cadeias de caracteres estão entre aspas duplas ("). Aspas duplas consecutivas ("") dentro de delimitadores de cadeia significa uma aspa dupla literal ("). Então, quatro aspas duplas ("""") seria uma string literal de um caractere, uma aspa dupla ("). Coloque tudo junto e """" & WScript.Arguments(0) & """" se tornaria "<argument>", Onde <argument> é o primeiro argumento de linha de comando passado para o script. - Bob
Como modificá-lo para passar todos os argumentos? Seria mais conveniente passar os argumentos sem citá-los. - Ctrl-C
Isso ainda não requer que você crie um arquivo de lote para colocar o wscript.exe "C:\Wherever\invisible.vbs" ... dentro de? - endolith


Para ocultar arquivos em lote ou arquivos de comando ou quaisquer arquivos .... Use o Windows XP integrado IExpress.exe utilitário para criar um arquivo .EXE fora do arquivo em lotes. Ao usar IExpress Certifique-se de verificar a opção de execução oculta e marque todas as caixas sobre não mostrar nada. Depois de criar seu arquivo .exe, coloque-o em qualquer pasta de comando de execução escolhida e você nunca o verá.


24



Oh boa solução, na verdade. - Camilo Martin
Existe alguma coisa equivalente a lexpress.exe em versões mais recentes do Windows, como o Windows 7? - Sнаđошƒаӽ
@ Sнаđошƒаӽ É no windows 7 .... só testei - DarthRubik
@DarthRubik Obrigado por compartilhar isso. Eu também testei e funciona muito bem. Hora de defender a resposta. :) - Sнаđошƒаӽ
Isso não parece funcionar no Windows 10 64 desde o "Command.com" não parece mais estar presente - Arne S


usar Cmdow é um utilitário de linha de comando Win32 para NT4 / 2000 / XP / 2003 que permite que as janelas sejam listadas, movidas, redimensionadas, renomeadas, ocultas / ocultas, desativadas / ativadas, minimizadas, maximizadas, restauradas, ativadas / desativadas, fechadas, eliminadas e muito mais.

Execute um arquivo em lote escondido passando os parâmetros: -

cmdow / run / hid mybat arg1 "arg 2"


8



Mas como eu executaria esse comando? - Moayad Mardini
O cmdow é detectado como um malware pela maioria dos produtos antivírus. Por isso, seria difícil usar essa solução em outros lugares além do próprio PC. - Ganesh R.
@Ganesh: Alguma solução melhor? - Moayad Mardini
É open source? Não adianta usar um aplicativo de terceiros que não seja de código aberto e possa estar empacotando trojans quando você pode fazer a mesma coisa executando o 1 vbscript da harrymc (veja a resposta na parte superior do tópico). - thebunnyrules
Bem, é de código aberto, então é muito legal. Pode obter o código fonte aqui: github.com/ritchielawrence/cmdow - thebunnyrules


Execute o script por meio de um trabalho sem torná-lo interativo:

at 11:00 script.bat

Outra solução, se você não se importar de instalar algo como Python, você pode simplesmente criar um script e executá-lo com pythonw (a versão vinculada para operações da GUI). Como você não está usando APIs gráficas, a janela não será exibida. Basta usar as chamadas para os.system() e imitará um script em lote, pois é o mesmo que digitar as strings na linha de comando.

Exemplo:

import os

os.system("tasklist > C:\tasks.txt")
os.system("ipconfig /all > C:\netinfo.log")

7



Mas como eu executaria esse comando? - Moayad Mardini
Você teria que agendar uma tarefa agendada ou escrever um serviço. - Unfundednut
exemplos adicionados. - John T


Se o seu arquivo de lote pode caber em uma linha e tantos caracteres, basta usar um atalho clicando com o botão direito dentro de uma pasta colocada em um diretório aleatório, e passar pelo restante do assistente e, por fim, clicar com o botão direito no atalho clique em propriedades e, abaixo do alvo, insira o que você usaria normalmente em um arquivo bat. E Bobs seu tio!

Prós:

 No Command Window
 Ability to use an icon
 Same Functionality of bat file

Contras:

 Limited to one line, so many characters

7



excelente resposta, para mim - johny why
O único problema é que você não pode associar um tipo de arquivo a um atalho. Portanto, se você quiser abrir um script em lote clicando duas vezes nele no explorador, ainda precisará de um arquivo .bat. - Björn Lindqvist
Eu ainda estou tentando encontrar o tio Bob, está aqui em qualquer lugar !! - Pimp Juice IT


Usando o Windows7, você pode usar o painel de controle "Tarefa agendada" para agendar um arquivo de lote para ser executado em segundo plano de forma invisível com as permissões especificadas e até mesmo como a conta "SYSTEM". Veja a imagem abaixo:

enter image description here 

Além disso, embora com menos recursos, você também pode criar uma tarefa de script em lote invisível como essa na linha de comando usando o comando "AT.exe" sem a opção '/ interactive'.


6



A caixa de seleção oculta apenas oculta a tarefa na interface de usuário do Agendador de Tarefas ( - Sourav Ghosh


Você pode executá-lo minimizado facilmente.

start /MIN batch.cmd

4



ou use / B em vez disso! - rany


Parece que alguém fez uma lista das 7-8 maneiras de executar 'silencioso':

http://forums.techguy.org/dos-other/644932-solved-howto-run-batch-file.html


3



Por favor, liste-os aqui, não publique uma resposta que seja apenas um link em outro lugar. - endolith


Eu não gosto da solução VBScript.

Faça o download e copie nircmd.exe para o seu %systemroot%\system32 pasta, em seguida, adicione este comando à primeira linha do seu lote:

nircmd.exe win hide ititle "cmd.exe"

ou torne o título do lote personalizado primeiro com title comando para evitar de esconder tudo cmd janelas, assim:

title MyBatch
nircmd.exe win hide ititle "MyBatch"

3



Eu uso este método exato, mas falhou por algum tempo que nircmd não esconde a janela cmd, apenas minimizado na barra de tarefas, e não pode ser restaurado por clique sobre ele. Não sei porque ... - James Yang