Отключение "Windows не удается найти" [foo].exe '" всплывающие окна

когда я использую start команда в пакетном скрипте для запуска программы, я ожидаю, что программа будет запущена асинхронно; это происходит именно так, как я ожидал бы, если программа, которую я запускаю, существует.

однако, если я попытаюсь start программа, которая не существует, Windows отображает всплывающее окно, говоря мне, что он не может найти файл, блокируя выполнение пакетного сценария, пока я вручную не закрою всплывающее окно. Это раздражает. Из-за какой-то удаленной файловой системы махинации, у меня нет возможности надежно гарантировать, что двоичный файл будет существовать, прежде чем я его запущу, и у меня нет возможности заблокировать двоичный файл. В моем сценарии, если двоичный файл не существует, это не критическая ошибка,и мой сценарий должен просто продолжить.

есть ли способ предотвратить создание этих всплывающих окон в первую очередь или в качестве альтернативы пакетной / cmd однострочной, которая может использоваться для асинхронного выполнения приложений, которые не будут блокировать продолжение сценария, если он потерпит неудачу (что-то я смогите как раз как легко использовать от CLI как сценарий серии)?

14
задан The name's Bob. MS Bob.
11.05.2023 20:53 Количество просмотров материала 2809
Распечатать страницу

3 ответа

у меня нет возможности надежно гарантировать, что двоичный файл будет существовать, прежде чем я запустил его

можно использовать which.cmd, чтобы увидеть, существует ли двоичный файл, и возвращает соответствующий ERRORLEVEL.


решение вашей проблемы (отключение функции "Windows не может найти" [foo].ехе'" всплывающее окно)

  • run which program
  • Регистрация ERRORLEVEL
  • run start только если program не найдено.
:: 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

ссылка ниже приведен полный исходный код which.cmd (который был написан суперпользователя пользователей dbenham).

источник что.cmd - показать полный путь к исполняемому файлу.

2
отвечен DavidPostill 2023-05-13 04:41

одним из способов было бы скопировать / переместить двоичный файл в новое временное расположение с уникальным именем и выполнить его.

Если копирование/перемещение успешно, то уникальный файл существует, и вы можете выполнить его без влияния "удаленной файловой системы махинаций". Если нет, то, по крайней мере, вы знаете, вы не получите всплывающее окно.

2
отвечен keldstefan 2023-05-13 06:58

используйте ключ /C для команды start, он должен пропустить раздражающее всплывающее окно.

запустить / C appthatmayfail.exe args

-1
отвечен user3224057 2023-05-13 09:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя

Похожие вопросы про тегам:

batch
cmd.exe
command-line
windows
windows-7
Вверх