не работает проверка IF

Тема в разделе "Пакетные файлы CMD, BAT", создана пользователем alex_diablo, 3 окт 2016.

  1. alex_diablo
    Оффлайн

    alex_diablo Пользователь

    Сообщения:
    104
    Симпатии:
    7
    добрый день.
    не отрабатывает проверка.
    при существовании файла Unity.exe должен осуществляться переход по метке exist1
    но вместо этого, скрипт продолжает выполняться дальше. не могу понять где ошибка

    Код (Text):
    echo %unity_name% | FIND /I "64" > NUL

    if %ERRORLEVEL%==0 (set rate=%PROGRAMFILES%) else set rate=%PROGRAMFILES(x86)%

    if exist %rate%\Unity_%vers%\Editor\Unity.exe (goto exist1)
    if exist %rate%\Unity_%vers%\Unity.exe (goto exist1)
     
  2. alex_diablo
    Оффлайн

    alex_diablo Пользователь

    Сообщения:
    104
    Симпатии:
    7
    вот такая проверка тоже не срабатывает:
    Код (Text):

    if exist "%PROGRAMFILES%\Unity_%vers%\Editor\Unity.exe" (echo unity installed)
     
    однако, такая отрабатывает нормально:
    Код (Text):

    if exist "%PROGRAMFILES(x86)%\Unity_%vers%\Unity.exe" (echo unity installed)
     
    в чем причина? никак не пойму.
     
    Последнее редактирование модератором: 3 окт 2016
  3. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.476
    Симпатии:
    4.305
    32-битная версия Unity.

    Нет кавычек.
    Ну и не помешало бы распечатать:
    Код (Text):
    echo %rate%\Unity_%vers%\Editor\Unity.exe
    и посмотреть правильный ли путь проверяется.
     
  4. alex_diablo
    Оффлайн

    alex_diablo Пользователь

    Сообщения:
    104
    Симпатии:
    7
    для разной разрядности пути разные:

    х86: %PROGRAMFILES(x86)%\Unity_%vers%\Unity.exe

    x64: %PROGRAMFILES%\Unity_%vers%\Editor\Unity.exe

    echo %PROGRAMFILES%\Unity_%vers%\Editor\Unity.exe раскрывается в C:\Program Files\Unity_5.3.5p5\Editor\Unity.exe

    но if exist %PROGRAMFILES%\Unity_%vers%\Editor\Unity.exe не срабатывает, однако если прописать жестко:

    if exist "c:\Program Files\Unity_%vers%\Editor\Unity.exe" goto exist1 , то все отрабатывает нормально...
    --- Объединённое сообщение, 3 окт 2016 ---
    кажется, понял, в чем дело... скрипт лежит на сетевой шаре, запускается через ярлык (с включенным крыжиком админских прав в свойствах). так вот, если запускать просто ярлык из сетевой шары, то все отрабатывает нормально. НО! если я запускаю ярлык по ссылке (например в письме аутлука), то проверка не работает. как это можно пофиксить?
     
    Последнее редактирование: 3 окт 2016
  5. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.476
    Симпатии:
    4.305
    Вижу ещё одну разницу:

    if exist "%PROGRAMFILES%\Unity_%vers%\Editor\Unity.exe" (echo unity installed)
    if exist "%PROGRAMFILES(x86)%\Unity_%vers%\Unity.exe" (echo unity installed)

    ярлык по ссылке в письме аутлука? О_о

    Так может аутлук блокирует запуск скрипта вообще?
    А как выглядит этот полный путь гиперссылки? Может не правильно прописан?
    + аутлук запущен скорее всего без админских прав, может дело в этом?
    Все ли у Вас в компании пользуются аутлуком? Может, надёжнее грамотно настроить групповые политики и производить установку ПО через нее?
     
  6. alex_diablo
    Оффлайн

    alex_diablo Пользователь

    Сообщения:
    104
    Симпатии:
    7
     

Поделиться этой страницей