Показать полную графическую версию : Вопрос об операции FOR
Browning Zed
11-12-2018, 19:57
Господа, не ругайте за нубство, но помогите прояснить следующую ситуацию. Если выполняется операция FOR, то название переменной, участвующей в цикле, обычно будет иметь вид "%%a", или "%%b", или "%%c" и т.д. Но также (как выяснилось на практике), вместо букв можно использовать цифры: "%%1", "%%2" и т.д. Тем не менее, цифры в переменных, сколько я не встречал примеров с операцией FOR, никогда не используются, но всегда фигурируют буквы. Связано ли это с какими-либо ограничениями, либо с чем-то еще?
Но также (как выяснилось на практике), вместо букв можно использовать цифры: "%%1", "%%2" и т.д. »
Переменные вида %0-%9 зарезервированы для приёма переданных скрипту/процедуре параметров (причём %0 — ссылка на сам пакетный файл или метку процедуры:
@echo off
setlocal enableextensions enabledelayedexpansion
echo [%0]
call :SampleSub
endlocal
exit /b 0
:SampleSub
echo [%0]
exit /b
https://i.imgur.com/hRXocz7.png
).
P.S. В принципе, Вы можете получить доступ к переменным цикла разбора вида %%1-%%9 как к токенам (https://stackoverflow.com/questions/8520313/windows-batch-script-to-parse-csv-file-and-output-a-text-file/8520993#8520993), но это надо уж очень постараться.
Browning Zed
11-12-2018, 22:58
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
Переменные вида %0-%9 зарезервированы для приёма переданных скрипту/процедуре параметров (причём %0 — ссылка на сам пакетный файл или метку процедуры: »
Спасибо за пояснение. А не будете так добры ссылочку кинуть по этому вопросу, чтобы была возможность поштудировать на досуге?
ссылочку кинуть по этому вопросу »
если разговор о параметрах, то немало можно посмотреть в справке к команде: call /?
будет возвращать то же значение, что и: »
Это как бы логично — и там, и там переменной цикла присваиваются одни и те же значения. Но лучше ограничивать себя использованием здесь буквенных переменных (не забывая о том, что в этом случае они ещё и регистрозависимы).
А не будете так добры ссылочку кинуть по этому вопросу, чтобы была возможность поштудировать на досуге? »
Да особо как-то и нечего посоветовать, такого всеобъемлющего и доступного, увы. А так — ряд забавных или необычных деталей можно почерпнуть на SS64: An A-Z Index of the Windows CMD command line | SS64.com (https://ss64.com/nt/) (но это, понятно, уже не для начального обучения).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.