Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
CMD/BAT - [решено] И вопросик по переменным

Пользователь


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

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


Изменения
Автор: NoIZz
Дата: 26-07-2012
Нужно организовать некий счетчик и использовать нумерацию в переменных - те нужно использовать переменную в имени переменной
жаль виндовый шелл не позволяет создавать массивы

такой метод как

VARCOUNT=0
set /A VARCOUNT=%VARCOUNT%+1
set VAR%VARCOUNT%=Text

работает

Те если явно указать переменную %VAR0%, %VAR1% то все ОК

но мне надо что-то типа того - echo %VAR%VARCOUNT%
это решаемо?

Отправлено: 20:04, 26-07-2012

 

Старожил


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

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


Лехко.
http://www.dostips.com/forum/viewtopic.php?f=3&t=2164

Отправлено: 20:23, 26-07-2012 | #2



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

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


Пользователь


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

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


Посмотрел - не врубился (((
честно
это не то что нужно

то что переменным присвевается значение это понятно

но как его вывести явно - а не просто set

яж грю - это работает
VARCOUNT=0
set /A VARCOUNT=%VARCOUNT%+1
set VAR%VARCOUNT%=Text

echo %VAR1% выведет Text
а как мне цифру в переменной задать другой переменной при выводе - с помощью echo например
или опять же разбирать в цикле вывод set VAR
???

Последний раз редактировалось NoIZz, 26-07-2012 в 21:08.


Отправлено: 20:51, 26-07-2012 | #3


Старожил


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

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


Код: Выделить весь код
@echo off &setlocal enableextensions

set "phrase=Hello everyone! Hello! Helllooo!!1 Helllooooo!!!1  Hellloooooooo!!!!11"

set /a word=0
call :loop "%phrase%"
set /a word-=1

set word
echo.
echo word from 0 to %word%
for /l %%i in (0,1,%word%) do (
	call echo.%%word.%%i%%
)
echo.

echo word from %word% to 0
for /l %%i in (%word%,-1,0) do (
	call echo.%%word.%%i%%
)
echo.

echo word from 0 to %word% by step 2
for /l %%i in (0,2,%word%) do (
	call echo.%%word.%%i%%
)
echo.

echo word from %word% to 0 by step 3
for /l %%i in (%word%,-3,0) do (
	call echo.%%word.%%i%%
)
echo.

goto :eof


:loop
for /f "tokens=1,*" %%a in ("%~1") do (
	set "word.%word%=%%a"
	set /a word+=1
	call :loop "%%b"
)
goto :eof
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:34, 26-07-2012 | #4


Ветеран


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

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


NoIZz,
Код: Выделить весь код
set "varcount=0"
set /a varcount+=1

set "var%varcount%=test"

call echo %%var%varcount%%%
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:20, 26-07-2012 | #5


Пользователь


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

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


Спасибо! )))
Тупо не догадался бы использовать для вызова echo - call
Видно доки плохо читал

p.s. Очень отзывчивый народ на этоv форуме )))

p.s.2. просто из командной строки - %var%varcount%%

Последний раз редактировалось NoIZz, 26-07-2012 в 23:27.


Отправлено: 23:21, 26-07-2012 | #6


Старожил


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

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


можно использовать отложенное раскрытие переменных
Код: Выделить весь код
@echo off &setlocal enableextensions

set "phrase=Hello everyone! Hello! Helllooo!!1 Helllooooo!!!1  Hellloooooooo!!!!11"

set /a word=0
call :loop "%phrase%"
set /a word-=1

set word
echo.
echo word from %word% to 0
for /l %%i in (%word%,-1,0) do (
	setlocal enabledelayedexpansion
	echo.!word.%%i!
	endlocal
)
echo.

echo word from 0 to %word% by step 2
for /l %%i in (0,2,%word%) do (
	setlocal enabledelayedexpansion
	echo.!word.%%i!
	endlocal
)
echo.

goto :eof


:loop
for /f "tokens=1,*" %%a in ("%~1") do (
	set "word.%word%=%%a"
	set /a word+=1
	call :loop "%%b"
)
goto :eof
запись понятнее и код работает быстрее

Отправлено: 23:40, 26-07-2012 | #7


Пользователь


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

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


Это понятно
Но кому как


Над такой вещью до сих пор офигеваю

:loop

call :loop

вызов подпрограммы из самой себя - жесть

Отправлено: 23:57, 26-07-2012 | #8


Старожил


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

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


да ладно


Отправлено: 00:10, 27-07-2012 | #9


Ветеран


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

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


Цитата NoIZz:
Над такой вещью до сих пор офигеваю »
Что Вас удивляет? Что в пакетных файлах можно использовать рекурсивные функции?
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

call :Reverse "Мама мыла раму"

echo [%Reverse%]

endlocal
exit /b 0

:Reverse
	setlocal enableextensions enabledelayedexpansion
	set sOutName=%~0
	
	set sValue=%~1
	
	if defined sValue (
		call :Reverse "%sValue:~1%"
		set sResult=!Reverse!%sValue:~0,1%
	)
	
	endlocal & set %sOutName:~1%=%sResult%
	exit /b
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:29, 27-07-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Объективы с переменным фокусным расстоянием в эквиваленте 35мм lxa85 Цифровое изображение 5 20-03-2011 21:21
CMD/BAT - [решено] Создание папки под переменным именем monlogin Скриптовые языки администрирования Windows 4 07-11-2010 20:19
Ликбез по переменным Farxat Хочу все знать 0 05-12-2009 22:11
Доступ - Полный доступ к системным переменным vikemor3 Microsoft Windows 2000/XP 2 01-02-2007 18:02
Фильм + звуковая дорожка с переменным битрейтом ShaRP Хочу все знать 2 15-09-2004 11:18




 
Переход