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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как работать с переменной внутри цикла FOR?

Ответить
Настройки темы
CMD/BAT - [решено] Как работать с переменной внутри цикла FOR?

Новый участник


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

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


Подскажите, пожалуйста. Не могу понять, что происходит.
Мне нужно, чтобы при каждой итерации в цикле for (кусок кода ниже) переменная j увеличивалась на 1. Но даже присваивание ей не работает: на каждом шаге получаю "before: 1, after: 1". Что я делаю не так?

Код: Выделить весь код
SET j=1
FOR /F %%a in ('dir /b .\*.jpg') do (
@echo before %j%
@SET /a j = %j% + 1 
@echo after %j%
REM тут вырезано все, что не относилось к этой ошибке
)

Отправлено: 22:04, 29-09-2010

 

Ветеран


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

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


Цитата dimitrioglo:
К сожалению такая конструкция не работает... »
Код: Выделить весь код
  > type 1.cmd                                                                 
@echo off                                                                      
setlocal                                                                       
                                                                               
set "var=A"                                                                    
                                                                               
for /f "tokens=2 delims=:" %%i in (' "2>&1 find "" %var%" ') do (              
                                                                               
    if " %var%"=="%%i" (echo %var% is UPPERCASE) else (echo %var% is lowercase)
                                                                               
)                                                                              
  > 1                                                                          
A is UPPERCASE
УМВР

Отправлено: 18:22, 14-06-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


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

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


Может кому то пригодится как проверить символ в верхнем регистре или нет, я добился вот таким образом:
Код: Выделить весь код
@echo off
setlocal
set "var=A"
for /f "tokens=1,2* delims=:" %%a in ('find "" "%var%" 2^>^&1') do set String=%%a
echo %var%
echo %String:~-1,1%
if %var% EQU %String:~-1,1% echo 1
if %var% NEQ %String:~-1,1% echo 2
pause

Отправлено: 18:34, 14-06-2013 | #12


Ветеран


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

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


Цитата:
Код: Выделить весь код
if %var% EQU %String:~-1,1% echo 1
if %var% NEQ %String:~-1,1% echo 2
«else» уже не в моде?

Отправлено: 03:31, 15-06-2013 | #13


Новый участник


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

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


Цитата Iska:
«else» уже не в моде? »
у меня 2 разных условия, приведенный код лишь пример...

А теперь по сути...

Люди добрые )) помогите...

у меня конструкция
Код: Выделить весь код
for /f "tokens=1-3 skip=1 delims=/-:., " %%a in (conf.txt) do (
set value=%%b
)
из документа со следующим содержанием
Код: Выделить весь код
log1    admin 
pass1   admin 

log2    tse 
passw2  sQOsS97Zj7
всегда выводит sQOsS97Zj7 не зависимо от указанного skip=1, skip=2 или skip=3...
В чем косяк..?

Отправлено: 12:03, 17-06-2013 | #14


Аватара для gora

Ушёл из жизни


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

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


Цитата dimitrioglo:
В чем косяк..? »
В том, что строка
Код: Выделить весь код
set value=%%b
выполняется несколько раз и всегда будет "вытаскивать" последнее значение из цикла.
skip меняет начальное значение цикла, но на последнее значение он ни какого влияния не оказывает (если конечно не превышает число строк в файле).
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:56, 17-06-2013 | #15


Новый участник


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

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


Цитата gora:
выполняется несколько раз и всегда будет "вытаскивать" последнее значение из цикла. »
Да, убедился что именно так... но как же тогда ему указать нужную строку..?

Отправлено: 13:27, 17-06-2013 | #16


Аватара для gora

Ушёл из жизни


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

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


Попробуйте так:
Код: Выделить весь код
for /f "tokens=1-3 skip=1 delims=/-:., " %%a in (conf.txt) do (
set value=%%b& GoTo _end
)
:_end

Отправлено: 13:32, 17-06-2013 | #17


Новый участник


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

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


Цитата gora:
for /f "tokens=1-3 skip=1 delims=/-:., " %%a in (conf.txt) do (
set value=%%b& GoTo _end
)
:_end »
спасибо - подходящее решение.

Но я, как обычно, с новым вопросом...

почему в следующей схеме
Код: Выделить весь код
for /L %%j in (%starting%,1,%ending%) do (
	for /f "tokens=1-3 skip=%%j delims=/-:., " %%a in (conf.ini) do (
	set value=%%b & goto fin
	)
	:fin
	ping -n 1 -w 5000 192.168.254.254 >nul
	echo %value%
)
переменную %%j из (skip=%%j) видит как %j а не как значение переменной... неужели я много прошу...

Отправлено: 16:35, 17-06-2013 | #18


Ветеран


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

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


Код: Выделить весь код
setlocal enableextensions enabledelayedexpansion

for /L %%j in (%starting%,1,%ending%) do (
	for /f "tokens=1-3 skip=%%j delims=/-:., " %%a in (conf.ini) do (
	set value=%%b & goto fin
	)
	:fin
	ping -n 1 -w 5000 192.168.254.254 >nul
	echo !value!
)

endlocal

Отправлено: 17:29, 17-06-2013 | #19


Новый участник


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

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


Цитата Iska:
setlocal enableextensions enabledelayedexpansion
for /L %%j in (%starting%,1,%ending%) do (
for /f "tokens=1-3 skip=%%j delims=/-:., " %%a in (conf.ini) do (
set value=%%b & goto fin
)
:fin
ping -n 1 -w 5000 192.168.254.254 >nul
echo !value!
)
endlocal »
к сожалению не помогло... ситуация осталась той же

Отправлено: 19:14, 17-06-2013 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как работать с переменной внутри цикла FOR?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. NiOl Скриптовые языки администрирования Windows 7 31-01-2019 19:58
VBA - Как присвоить переменной содержимое Range на VBA for WORD Selena57 Программирование и базы данных 1 25-03-2009 00:52
[решено] Первая строчка переменной. Как скопировать? r35TnX AutoIt 5 06-03-2009 07:12
CMD/BAT - [решено] как правильно передать переменные подпрограмме из цикла for akrav Скриптовые языки администрирования Windows 4 07-01-2008 17:51
js имя объекта из переменной, как? E-mail Вебмастеру 13 15-03-2005 07:22




 
Переход