yakoffka.ru
грабли, костыли и велосипеды php, css, html, js и прочего

костыли cmd

использование составных (порядковых переменных)

В случае, когда мы заранее не знаем имя переменной, к которой нам необходимо обратиться, стоит использовать 'составную переменную'. Например:

	setlocal enabledelayedexpansion
	
	set /a "num_fruit=5"
	set "fruit_param_1_x1=2" && set "fruit_param_1_x2=red" && set /a "fruit_param_1_x2=apple"
	set "fruit_param_2_x1=5" && set "fruit_param_2_x2=orange" && set /a "fruit_param_2_x2=orange"
	set "fruit_param_3_x1=1" && set "fruit_param_3_x2=green" && set /a "fruit_param_3_x2=pear"
	set "fruit_param_4_x1=0" && set "fruit_param_4_x2=orange" && set /a "fruit_param_4_x2=grapefruit"
	set "fruit_param_5_x1=6" && set "fruit_param_5_x2=yellow" && set /a "fruit_param_5_x2=lemon"
			
используя составную переменную мы без проблем можем обратиться к рандомному фрукту и узнать его параметры:

	call :RND 1 %num_fruit% rand_fruit
	set "toLog=выбираем ссылку в главном меню. выбран фрукт № %rand_fruit%."

	set "quantity=!fruit_param_%rand_fruit%!_x1"
	set "color=!fruit_param_%rand_fruit%!_x2"
			
код функции получения рандомного номера:

			call :RND %min% %max% res
	====================================================================================================
	:RND
	set min=%1
	set max=%2
	set /A res=%min%+(%max%-%min%+1)*%random%/32768
	set %3=%res%
	echo min="%min%"; max="%max%"; res="%res%"
	exit /b