Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


1. Исполняется команда:
Код: Выделить весь код
reg.exe query "%sPath%"
2. Вывод команды «reg.exe» передаётся по конвейеру («|») на вход команды:
Код: Выделить весь код
find.exe "{"
которая фильтрует полученный текст, оставляя только строки, в которых содержится указанный символ («{»).

3. Вывод команды «find.exe» передаётся на построчный разбор команде «for /f»:

* чтобы указать, что мы разбираем именно вывод команды, а не содержимое файла, внутри скобок мы используем апострофы («'…'»), внутри которых мы указываем саму команду (в данном случае — несколько команд, объединённых конвейером);
* чтобы символ конвейера был отнесён интерпретатором не к самой команде «for /f», а к указанным для исполнения командам, мы его экранируем символом «^»;
* дабы строки воспринимались цельной лексемой — мы указываем атрибутом «delims» отсутствие разделителей лексем [только сейчас увидел и поправил в предыдущем коде свою очередную тупую описку — двойной знак равенства при атрибуте «delims»].

4. Результаты разбора будут доступны внутри цикла разбора «for /f» через указанную переменную «%%i».

5. После разбора первой же строки мы безусловно переходим на указанную метку «:Teminate», тем самым обрывая разбор.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:36, 25-05-2012 | #4