Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2023, 15:51
Кандидат Javascript-наук
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 142

Почему в батник не берет элементы из переменной?
Написал для батника код. Код засовывает в переменную pyti_k_15_perebivkam имена 15-ти файлов vidov_ska4ali_1.mp4 .... vidov_ska4ali_15.mp4 . Далее он должен сгенерить рандомною цифру 1-15 и взять по сгенереному индексу один элемент из переменной pyti_k_15_perebivkam и записать в imena_perebivok_dla_dobavleniya



Попробовал сразу (смотрите код ниже) присвоить индекс
set randomIndex=3
какие элементы брать , и далее рандомом переназначить randomIndex юзая
set /a randomIndex=!random! %% 15 + 1


Вот что получилось:
vcvcv.jpg
Если же так делаю
set randomIndex=
или вообще не назначаю (например закоментил)
:: set randomIndex=3
то вообще на выходе пустота:
444444444.jpg

- Почему код выдаёт в ответе vidov_ska4ali_3.mp4 vidov_ska4ali_3.mp4 вместо (как пример) vidov_ska4ali_10.mp4 vidov_ska4ali_4.mp4 ?

Код:
set i=0
for %%x in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) do (
set /A i+=1
set pyti_k_15_perebivkam[!i!]=vidov_ska4ali_%%x.mp4
)

for /L %%x in (1,1,15) do (
echo !pyti_k_15_perebivkam[%%x]!
)

echo ************

set randomIndex=3
set "skolkoShtykPerebivok=2"
for /L %%x in (1,1,!skolkoShtykPerebivok!) do (
set /a randomIndex=!random! %% 15 + 1
echo !randomIndex!
call set "randomFile=!pyti_k_15_perebivkam[%randomIndex%]!"
set "imena_perebivok_dla_dobavleniya=!imena_perebivok_dla_dobavleniya! !randomFile!"
)


echo imena_perebivok_dla_dobavleniya !imena_perebivok_dla_dobavleniya!
Ответить с цитированием
  #2 (permalink)  
Старый 20.01.2024, 15:17
Аспирант
Отправить личное сообщение для Arigato Посмотреть профиль Найти все сообщения от Arigato
 
Регистрация: 11.12.2011
Сообщений: 42

Где-то в начале батника должна быть команда:

setlocal enabledelayedexpansion


Я так понимаю, она у вас имеется, просто не все скопировано сюда.

Далее тут:

call set "randomFile=!pyti_k_15_perebivkam[%randomIndex%]!"


Переменная %randomIndex% раскрывается до начала цикла, так как заключена в знаки %, потому она имеет исходное значение 3 на всех итерациях цикла.

Для разыменования надо вынести этот код в отдельную подпрограмму. Вот так работает:

@echo off
setlocal enabledelayedexpansion
set i=0
for %%x in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) do (
	set /A i+=1
	set pyti_k_15_perebivkam[!i!]=vidov_ska4ali_%%x.mp4
)

for /L %%x in (1,1,15) do (
	echo !pyti_k_15_perebivkam[%%x]!
)

echo ************

set randomIndex=3
set "skolkoShtykPerebivok=2"
for /L %%x in (1,1,!skolkoShtykPerebivok!) do (
	set /a randomIndex=!random! %% 15 + 1
	echo !randomIndex!
	call :randomFile
	set "imena_perebivok_dla_dobavleniya=!imena_perebivok_dla_dobavleniya! !randomFile!"
)


echo imena_perebivok_dla_dobavleniya !imena_perebivok_dla_dobavleniya!

:randomFile
	set "randomFile=!pyti_k_15_perebivkam[%randomIndex%]!"
exit /b
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему когда элемент выводится на новую строку его дочерние элементы не появляются? BIOkefirchik Элементы интерфейса 2 29.08.2017 13:32
[title] - находит не все элементы, почему? 123456 jQuery 2 02.05.2017 14:54
Исключить из переменной elems все элементы которые имеют родственные элементы с класс Fenix-77 Общие вопросы Javascript 2 12.04.2016 16:20
Почему jQuery не обрабатывает элементы со значением атрибутов "nodeType" ercling jQuery 1 08.01.2014 22:10
Почему меняется значение переменной Ichigeki Общие вопросы Javascript 14 08.09.2011 12:48