Пакетный файл, ЕСЛИ ОН СУЩЕСТВУЕТ (exe-файл), ЗАПУСК (exe-файл), ВЫХОД, ЕЩЕ ЗАПУСК (install.exe файл). В противном случае НАЧНИТЕ не выполнять

#if-statement #batch-file #exe #not-exists

Вопрос:

Итак, я проверяю свой компьютер на наличие определенного файла, если его там нет, он проверяет, был ли файл обновления загружен недавно, если нет, он переходит на веб-сайт, загружает файл обновления и выполняет его. Мой пакетный файл работает, если он находит конкретный файл, он работает, если он не находит файл и обнаруживает, что он был загружен ранее, он переходит на веб-сайт и готовится к загрузке, но затем выдает мне ошибку, что он не может найти загруженный файл. Я новичок в пакетных файлах, чего мне не хватает?

 IF EXIST "C:Program Files (x86)XXXXXXXXXXXXXXIgnition.exe" (  START "" "C:Program Files (x86)"XXXXXXXXXXXXIgnition.exe"  EXIT  ) ELSE IF EXIST "C:Users%USERNAME%DownloadsUpdateAgent Installer.exe" (  START "" "C:Users%USERNAME%DownloadsUpdateAgent Installer.exe"  EXIT )ELSE (  START "" "https://XXXXXXX.com/XXXXXXX/XXXXXXX/UpdateAgent Installer.exe"  REM Allow adequate time for file to download  timeout /t 4 /nobreak  REM Loop until found, then execute  IF NOT EXIST "C:Users%USERNAME%DownloadsUpdateAgent Installer.exe" (  GOTO LoopStart  )  START "" "C:Users%USERNAME%DownloadsUpdateAgent Installer.exe" )  

Комментарии:

1. Поскольку в ветви true используется условие IF , при котором команда EXIT завершает cmd.exe обработку этого пакетного файла, нет необходимости в другом IF . Его проще использовать просто ) и использовать в следующей командной строке IF EXIST "C:Users%USERNAME%DownloadsUpdateAgent Installer.exe" ( . Закройте второй блок команд IF с EXIT и ) и больше не используйте )ELSE ( с синтаксической ошибкой, заключающейся в пропуске между ) и ELSE и последним ) . Это облегчило бы чтение кода.

2. START "" "https://XXXXXXX.com/XXXXXXX/XXXXXXX/UpdateAgent Installer.exe" запускает веб — браузер по умолчанию для загрузки файла, на котором пользователь должен подтвердить. Вы не можете контролировать, подтверждает ли пользователь вообще, и сколько времени занимает это действие пользователя и сколько времени требуется, чтобы загрузить действительно полностью исполняемый файл. Так что этот подход никогда не сработает. Я настоятельно рекомендую забыть об использовании пакетного файла для этой задачи. Я предлагаю закодировать сценарий PowerShell с этой задачей, потому что файл можно загрузить по протоколу HTTPS с помощью PowerShell без использования браузера.

3. Если вы используете Windows 10, вы можете использовать CURL ее для автоматической загрузки файла. Если вы работаете в Windows 7, есть хитрый трюк с использованием CERTUTIL программы для загрузки файлов.

4. Большое спасибо за предложения. Я не заметил лишних мест вокруг ЭЛСА. Я убрал пробелы и лишние слова. Изучаю PowerShell. Я не уверен, почему они запросили это в пакетном сценарии, но это то, что есть. Еще раз спасибо за всю проницательность.

5. Итак, я заметил, что у меня есть начало цикла, но нет начала цикла. Я добавил его выше «ЕСЛИ НЕ СУЩЕСТВУЕТ». Это только создает бесконечный цикл, потому что веб-сайт никогда не загружает файл. Я заглянул в локон и попробовал его. Я так делаю что-то не так. Пожалуйста, помогите.