|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Работа с переменными в цикле |
|
CMD/BAT - Работа с переменными в цикле
|
Новый участник Сообщения: 42 |
выводит если еще раз запустить то
а надо
что нет так?? я чего то не врубаюсь? и не подскажите как работать с переменными в цикле? почему где то в инете один процент, где то два , где то три? в интернете конкретной информации не нашел |
|
Отправлено: 18:15, 02-08-2012 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:00, 02-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать sov44, не совсем так. Переменные окружения, обрамлённые «%…%», раскрываются однократно при входе в скобки.
|
Отправлено: 19:13, 02-08-2012 | #3 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать DarkDream604, переменная %V%, не является переменной цикла, поэтому ее раскрытие произойдет не во время выполнения тела цикла , а до него, и только один раз. Первый вывод на экран показывает, что при отработке тела цикла создается переменная %V%, но значение ее пусто, так как раскрытие уже произошло. Но при выполнении цикла переменная %V% меняет свое значение, по окончании которого оно равно 7. Это подтверждает второй вывод на экран, где опять же %V% раскрывается один раз. Чтобы переменная %V% раскрывалась во время выполнения цикла нужно включить режим отложенного раскрытия переменных, как это сделал sov44, написав строку SetLocal enabledelayedexpansion. В таком режиме символы процента для переменной, раскрытие которой нужно отложить, меняется на восклицательный знак. Режим можно и не включать, а использовать трюк с оператором CALL:
Обратите внимание на выделенное красным. Я удвоил символы процента в имени переменной для того, чтобы раскрытие произошло 2 раза - первый раз интерпретатором перед выполнением, когда раскрывается все, что можно раскрыть (cимвол процента экранируется самим собою, поэтому при первом раскрытии от %%V%% останется только %V%), второй раз интерпретатором при выполнении команды CALL, которая на вход получит строку Echo:V=%V% I=тут уже будет какое-то значение. |
Отправлено: 21:53, 02-08-2012 | #4 |
Пользователь Сообщения: 136
|
Профиль | Отправить PM | Цитировать Как работает отложенное раскрытие переменных для времени?
setlocal enabledelayedexpansion for /f "usebackq delims=" %%i in (`time /t`) do set sTime=%%~i pause ::пауза, чтобы создать разницу во времени echo !sTime! ![]() Просто, чтобы уяснить. |
|
Отправлено: 16:08, 03-03-2015 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Не понимаете. Отложенное раскрытие, а не отложенное присвоение. Впрочем, в данном случае и отложенное раскрытие ни к чему.
|
Отправлено: 16:19, 03-03-2015 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - работа с 2 текстовыми файлами, именами файлов и всё в цикле | Тишина | Скриптовые языки администрирования Windows | 4 | 15-07-2012 20:26 | |
CMD/BAT - [решено] Батник для работы с 2 переменными. | wormfaker | Скриптовые языки администрирования Windows | 2 | 11-07-2011 04:39 | |
CMD/BAT - затруднения в работе с переменными | cher | Скриптовые языки администрирования Windows | 3 | 23-06-2011 21:46 | |
AHK: MouseClick пользовался переменными данными | Wedmet | AutoIt | 2 | 15-12-2010 16:18 | |
проблема с переменными окружения | Vasosel | Microsoft Windows NT/2000/2003 | 2 | 12-07-2006 14:21 |
|