Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Вопрос об операции FOR (http://forum.oszone.net/showthread.php?t=338184)

Browning Zed 11-12-2018 19:57 2845412

Вопрос об операции FOR
 
Господа, не ругайте за нубство, но помогите прояснить следующую ситуацию. Если выполняется операция FOR, то название переменной, участвующей в цикле, обычно будет иметь вид "%%a", или "%%b", или "%%c" и т.д. Но также (как выяснилось на практике), вместо букв можно использовать цифры: "%%1", "%%2" и т.д. Тем не менее, цифры в переменных, сколько я не встречал примеров с операцией FOR, никогда не используются, но всегда фигурируют буквы. Связано ли это с какими-либо ограничениями, либо с чем-то еще?

Iska 11-12-2018 22:21 2845433

Цитата:

Цитата Browning Zed
Но также (как выяснилось на практике), вместо букв можно использовать цифры: "%%1", "%%2" и т.д. »

Переменные вида %0-%9 зарезервированы для приёма переданных скрипту/процедуре параметров (причём %0 — ссылка на сам пакетный файл или метку процедуры:
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

echo [%0]
call :SampleSub

endlocal
exit /b 0

:SampleSub
        echo [%0]
        exit /b


).

P.S. В принципе, Вы можете получить доступ к переменным цикла разбора вида %%1-%%9 как к токенам, но это надо уж очень постараться.

Browning Zed 11-12-2018 22:58 2845441

Цитата:

Цитата Iska
P.S. В принципе, Вы можете получить доступ к переменным цикла разбора вида %%1-%%9 как к токенам, но это надо уж очень постараться. »

Да в том-то и соль, что даже не старался, отчего и возник вопрос. Ради примера:

Код:

For /f "tokens=3" %%1 in ('reg query "ветка_реестра" /v "параметр_реестра"') do echo %%1
будет возвращать то же значение, что и:

Код:

For /f "tokens=3" %%a in ('reg query "ветка_реестра" /v "параметр_реестра"') do echo %%a
Цитата:

Цитата Iska
Переменные вида %0-%9 зарезервированы для приёма переданных скрипту/процедуре параметров (причём %0 — ссылка на сам пакетный файл или метку процедуры: »

Спасибо за пояснение. А не будете так добры ссылочку кинуть по этому вопросу, чтобы была возможность поштудировать на досуге?

alpap 12-12-2018 01:24 2845471

Цитата:

Цитата Browning Zed
ссылочку кинуть по этому вопросу »

если разговор о параметрах, то немало можно посмотреть в справке к команде: call /?

Iska 14-12-2018 02:57 2845843

Цитата:

Цитата Browning Zed
будет возвращать то же значение, что и: »

Это как бы логично — и там, и там переменной цикла присваиваются одни и те же значения. Но лучше ограничивать себя использованием здесь буквенных переменных (не забывая о том, что в этом случае они ещё и регистрозависимы).

Цитата:

Цитата Browning Zed
А не будете так добры ссылочку кинуть по этому вопросу, чтобы была возможность поштудировать на досуге? »

Да особо как-то и нечего посоветовать, такого всеобъемлющего и доступного, увы. А так — ряд забавных или необычных деталей можно почерпнуть на SS64: An A-Z Index of the Windows CMD command line | SS64.com (но это, понятно, уже не для начального обучения).


Время: 12:07.

Время: 12:07.
© OSzone.net 2001-