Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

Чем инициализируется %%i?

Начала изучать cmd, дошел переменной окружения PATH - смысл ее понятен, но вот что делает конструкция цикла, например, такого:
for %%i in ("%PATH:;=" "%") do (...something)
Не понимаю, чем инициализируется i? и как вообще понимать in (...) в этом случае?


Ответ

for %%i in (...) интерпретируется очевидным образом - это цикл по набору значений, а вот как в данном случае строится набор значений - намного интереснее.
Запись "%PATH:;=" "%" интерпретируется следующим образом.
Всё, что между знаками % - это переменная и операторы её обработки. Операторы обработки начинаются после знака . Т.е. в данном случае имя переменной - PATH, операторы обработки - ;=" ". Поскольку в нашем выражении присутствует пробел, оно всё должно быть заключено в кавычки.
Оператор обработки в данном случае - это оператор замены. Строка слева от знака равенства будет замена на строку справа. Иными словами, конструкция
%VARIABLE:BEFORE=AFTER%
заменяет в переменной VARIABLE все вхождения строки BEFORE на строку AFTER. В нашем случае - разделитель каталогов - будет заменена на пробел, который воспримет как разделитель элементов цикл for

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

Отправить комментарий