Desabilitando o “Windows não consegue encontrar '[foo] .exe'” popups

1

Quando eu uso o comando start em um script em lote para iniciar um programa, espero que esse programa seja iniciado de forma assíncrona; Isso acontece exatamente como eu esperaria se o programa que estou lançando existe.

No entanto, se eu tentar start de um programa que não existe, o Windows exibirá um pop-up informando que não pode encontrar o arquivo, bloqueando a execução do script em lote até que eu feche manualmente o pop-up. Isso é chato. Devido a alguns shenanigans do sistema de arquivos remoto, não tenho como garantir com segurança que o binário existirá antes de executá-lo, e não tenho como bloquear o binário. No meu cenário, se o binário não existir, não é um erro crítico e meu script deve continuar.

Existe uma maneira de impedir que esses popups sejam criados, ou, alternativamente, um one-liner batch / cmd que pode ser usado para executar de forma assíncrona aplicativos que não bloquearão o script se ele falhar (algo Eu posso usar facilmente de uma CLI como um script em lote)?

    
por The name's Bob. MS Bob. 24.07.2015 / 19:19

3 respostas

2

Não tenho como garantir com segurança que o binário existirá antes de executá-lo

Você pode usar o which.cmd para ver se existe um binário e retorna um ERRORLEVEL apropriado.

Solução alternativa para o seu problema (Desativar o "Windows não consegue encontrar '[foo] .exe'" popup)

  • executar which program
  • verifique o ERRORLEVEL
  • execute start apenas se program for encontrado.
:: WHICH.CMD  CommandName  [ReturnVar]
::
::  Determines the full path of the file that would execute if
::  CommandName were executed.
::
::  The result is stored in variable ReturnVar, or else it is
::  echoed to stdout if ReturnVar is not specified.
::
::  If no file is found, then an error message is echoed to stderr.
::
::  The ERRORLEVEL is set to one of the following values
::    0 - Success: A matching file was found
::    1 - No file was found and CommandName is an internal command
::    2 - No file was found and CommandName is not an internal command
::    3 - Improper syntax - no CommandName specified

O link abaixo inclui o código-fonte completo para which.cmd (que foi escrito pelo superusuário usuário dbenham ).

Fonte which.cmd - Mostra o caminho completo para um arquivo executável.

    
por 24.07.2015 / 20:16
2

Uma maneira seria copiar / mover o arquivo binário para um novo local temporário com um nome exclusivo e executá-lo.
Se a cópia / movimentação for bem sucedida, então o arquivo único existe e você pode executá-lo sem a influência de "shenanigans do sistema de arquivos remoto". Se não, então pelo menos você saberá que não obterá a janela pop-up.

    
por 01.02.2016 / 09:13
-1

Use a opção / C para o comando start, ele deve pular o popup irritante.

inicio / C appthatmayfail.exe args

    
por 05.08.2015 / 14:49