Установите значение в цикле for - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь найти файл в Window Path.Итак, я создал цикл и для каждого каталога я ищу свой файл.Если найден, я поднимаю флаг.

Мой файл sofar:

    @Echo OFF
SET path=%PATH%;C:\Program Files\7-Zip;C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin
SET /A var=0

for %%G in ("%path:;=" "%") do IF EXIST 7x.exe (SET /A var = 1   )

IF /I "%var%" EQU "1" ECHO equality with 1
IF /I "%var%" EQU "0" ECHO equality with 0

Но моя переменная равна 0 после цикла, хотя я точно знаю, что файл там.

Так что возникает несколько вопросов: 1) Как установить переменную var в цикле 2) Можно ли проверить значение var перед проверкой на наличие файла Псевдокод: If (var == 0 && EXIST 7x.exe) set var = 1

1 Ответ

0 голосов
/ 23 ноября 2018

команда where (по умолчанию) ищет файл по пути (его также можно использовать для поиска по дереву папок или даже по всему диску с помощью переключателя /R, который вам здесь явно не нужен),Возвращает уровень ошибки 0, если файл был найден, и 1, если не найден.Есть даже /Q (Тихий) переключатель.Так что это довольно просто:

where /q 7z.exe 
set var=%errorlevel%
echo equality with %var%

Вместо команды set вы также можете напрямую echo equality with %errorlevel%, но имейте в виду, используя (почти) любую команду между where и использованиемиз %errorlevel% может изменить уровень ошибки.

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