[CMD] не работает проверка IF

alex_diablo

Активный пользователь
Сообщения
144
Реакции
9
Баллы
198
добрый день.
не отрабатывает проверка.
при существовании файла Unity.exe должен осуществляться переход по метке exist1
но вместо этого, скрипт продолжает выполняться дальше. не могу понять где ошибка

Код:
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)
 

alex_diablo

Активный пользователь
Сообщения
144
Реакции
9
Баллы
198
вот такая проверка тоже не срабатывает:
Код:
if exist "%PROGRAMFILES%\Unity_%vers%\Editor\Unity.exe" (echo unity installed)
однако, такая отрабатывает нормально:
Код:
if exist "%PROGRAMFILES(x86)%\Unity_%vers%\Unity.exe" (echo unity installed)
в чем причина? никак не пойму.
 
Последнее редактирование модератором:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,612
Реакции
6,051
Баллы
808
вот такая проверка тоже не срабатывает:

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

однако, такая отрабатывает нормально:

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

в чем причина? никак не пойму.

32-битная версия Unity.

но вместо этого, скрипт продолжает выполняться дальше. не могу понять где ошибка
Нет кавычек.
Ну и не помешало бы распечатать:
Код:
echo %rate%\Unity_%vers%\Editor\Unity.exe
и посмотреть правильный ли путь проверяется.
 

alex_diablo

Активный пользователь
Сообщения
144
Реакции
9
Баллы
198
для разной разрядности пути разные:

х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 , то все отрабатывает нормально...
кажется, понял, в чем дело... скрипт лежит на сетевой шаре, запускается через ярлык (с включенным крыжиком админских прав в свойствах). так вот, если запускать просто ярлык из сетевой шары, то все отрабатывает нормально. НО! если я запускаю ярлык по ссылке (например в письме аутлука), то проверка не работает. как это можно пофиксить?
 
Последнее редактирование:

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,612
Реакции
6,051
Баллы
808
Вижу ещё одну разницу:

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

НО! если я запускаю ярлык по ссылке (например в письме аутлука), то проверка не работает. как это можно пофиксить?
ярлык по ссылке в письме аутлука? О_о

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

alex_diablo

Активный пользователь
Сообщения
144
Реакции
9
Баллы
198
Вижу ещё одну разницу:

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


какую разницу? я ж написал, для разных разрядностей разные пути, их я и указал.
 
Сверху Снизу