Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
 Аватар для gonome
1 / 1 / 1
Регистрация: 02.07.2013
Сообщений: 96

Задать случайный интервал по времени для команды Timeout

26.01.2019, 15:57. Показов 5580. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасти, вот есть у меня код на манер такого:

Windows Batch file
1
2
3
4
START  /MIN "" C:\111\111.exe param1 param2 param3 param4
TIMEOUT /T 23 /NOBREAK
taskkill /f /im 111.exe
TIMEOUT /T 5 /NOBREAK
А можно для первого и второго "таймаутов" задать случайные значения из интервалов 15-40 и 5-10 секунд соответственно? Как будет выглядеть тогда код?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.01.2019, 15:57
Ответы с готовыми решениями:

Задать интервал по времени в Chart
Для отчетов например от 1 до 100 можно задать chart1.ChartAreas.AxisX.Maximum = i; ...

Случайный интервал для timer
Задание: Через случайный интервал (3-8 сек) выводить рандомное изображение животного, в моем случае покемона :) Внизу должны быть кнопки с...

Как вырезать или задать интервал времени в datetime
Как вырезать или задать интервал времени в datetime? Например мне нужно делать определенные действия только с 14:00 - 20:00 Я например...

15
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
26.01.2019, 19:05
Лучший ответ Сообщение было отмечено gonome как решение

Решение

Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off&>nul echo %random%
call :rand 15 40
start /min "" C:\111\111.exe param1 param2 param3 param4
timeout /t %rand% /nobreak
call :rand 5 10
taskkill /f /im 111.exe
timeout /t %rand% /nobreak
 
:rand
SET /a rand=%random%*(%2-%1+1)/32768+%1
Неясно только, зачем последний таймаут...
2
 Аватар для gonome
1 / 1 / 1
Регистрация: 02.07.2013
Сообщений: 96
26.01.2019, 19:07  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Неясно только, зачем последний таймаут...
Открыть процесс, проиграть его Н секунд, закрыть процесс, подождать Н секунд, следующая команда...
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
26.01.2019, 20:08
Цитата Сообщение от gonome Посмотреть сообщение
следующая команда...
А. Стоило сразу написать.
0
 Аватар для gonome
1 / 1 / 1
Регистрация: 02.07.2013
Сообщений: 96
26.01.2019, 21:38  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
А. Стоило сразу написать.
Ну я, как бы, счёл что достаточно указания что идут 2 разных таймаута, чтобы понять что надо обоим уделить внимание.
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
26.01.2019, 23:28
Оно и уделено. Что-то не устроило?
0
 Аватар для gonome
1 / 1 / 1
Регистрация: 02.07.2013
Сообщений: 96
27.01.2019, 09:54  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Оно и уделено.
Щас попробуем с командами и циклом:

Исходник:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
cd /D "C:\123\"
:start
::variant1
START  /MIN "" C:\123\123.exe param1 param2
TIMEOUT /T 23 /NOBREAK
taskkill /f /im 123.exe
TIMEOUT /T 5 /NOBREAK
 
::variant2
START  /MIN "" C:\123\123.exe param3 param4
TIMEOUT /T 23 /NOBREAK
taskkill /f /im 123.exe
TIMEOUT /T 5 /NOBREAK
 
::variant3
START  /MIN "" C:\123\123.exe param5 param6
TIMEOUT /T 23 /NOBREAK
taskkill /f /im 123.exe
TIMEOUT /T 5 /NOBREAK
goto start
А надо так?
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
cd /D "C:\123\"
@echo off&>nul echo %random%
:start
 
::variant1
START  /MIN "" C:\123\123.exe param1 param2
call :rand 15 40
timeout /t %rand% /nobreak
taskkill /f /im 123.exe
call :rand 5 10
timeout /t %rand% /nobreak
:rand
SET /a rand=%random%*(%2-%1+1)/32768+%1
 
::variant2
START  /MIN "" C:\123\123.exe param3 param4
call :rand 15 40
timeout /t %rand% /nobreak
taskkill /f /im 123.exe
call :rand 5 10
timeout /t %rand% /nobreak
:rand
SET /a rand=%random%*(%2-%1+1)/32768+%1
 
::variant3
START  /MIN "" C:\123\123.exe param5 param6
call :rand 15 40
timeout /t %rand% /nobreak
taskkill /f /im 123.exe
call :rand 5 10
timeout /t %rand% /nobreak
:rand
SET /a rand=%random%*(%2-%1+1)/32768+%1
 
goto start
И в каждом месте можно даже поменять диапазон значений рандома, так?
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
27.01.2019, 12:42
12-13, 22-23 строки выкинуть. 32-33 с 35 поменять местами.
Значения после call :rand, конечно, можно менять.
0
27.01.2019, 13:51

Не по теме:

gonome,

Цитата Сообщение от FlasherX Посмотреть сообщение
Неясно только, зачем последний таймаут...
и все-таки до сих пор в тени ...

0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
27.01.2019, 14:18

Не по теме:

Цитата Сообщение от alpap Посмотреть сообщение
и все-таки до сих пор в тени ...
Заметил. А что мы можем поделать?

0
 Аватар для gonome
1 / 1 / 1
Регистрация: 02.07.2013
Сообщений: 96
27.01.2019, 16:22  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
12-13, 22-23 строки выкинуть. 32-33 с 35 поменять местами.
Значения после call :rand, конечно, можно менять.
Так а не в самое ли начало тогда надо воткнуть?
:rand
SET /a rand=%random%*(%2-%1+1)/32768+%1

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
cd /D "C:\123\"
@echo off&>nul echo %random%
:rand
SET /a rand=%random%*(%2-%1+1)/32768+%1
 
:start
 
::variant1
START  /MIN "" C:\123\123.exe param1 param2
call :rand 16 41
timeout /t %rand% /nobreak
taskkill /f /im 123.exe
call :rand 1 110
timeout /t %rand% /nobreak
 
::variant2
START  /MIN "" C:\123\123.exe param3 param4
call :rand 10 99
timeout /t %rand% /nobreak
taskkill /f /im 123.exe
call :rand 52 120
timeout /t %rand% /nobreak
 
::variant3
START  /MIN "" C:\123\123.exe param5 param6
call :rand 135 430
timeout /t %rand% /nobreak
taskkill /f /im 123.exe
call :rand 53 103
timeout /t %rand% /nobreak
 
goto start
Такая расстановка корректна?

Цитата Сообщение от alpap Посмотреть сообщение
и все-таки до сих пор в тени ...
Цитата Сообщение от FlasherX Посмотреть сообщение
Заметил. А что мы можем поделать?
Не понимаю. О чём вы? 2 таймаута: один - на время выполнения задачи, второй - пауза между выполнением задач.
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
27.01.2019, 17:28
Цитата Сообщение от gonome Посмотреть сообщение
Так а не в самое ли начало тогда надо воткнуть?
Не надо путать call и goto.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off&setlocal enabledelayedexpansion&>nul echo %random%
 
for /l %%# in (0) do (
::variant1
call :run param1 param2 16 41 1 110
::variant2
call :run param3 param4 10 99 52 120
::variant3
call :run param5 param6 135 430 53 103
)
 
:run
start /min "" C:\123\123.exe %1 %2
call :rand %3 %4
timeout /t !rand! /nobreak
taskkill /f /im 123.exe
call :rand %5 %6
timeout /t !rand! /nobreak
 
:rand
set /a rand=%random%*(%2-%1+1)/32768+%1
Цитата Сообщение от gonome Посмотреть сообщение
второй - пауза между выполнением задач
В бесконечном цикле — ясно.
0
 Аватар для gonome
1 / 1 / 1
Регистрация: 02.07.2013
Сообщений: 96
27.01.2019, 17:59  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
...
Ох, сурово вы код преобразовали, я даже едва понимаю его теперь. Так понимаю, вы ужали и сократили, собрав параметры запуска и рандомизатор времени в группу :run.

Еще небольшое уточнение: идет несколько циклов 1 программулины с параметрами, а в конце перед перезапуском цикла - единоразовый запуск другой программулины, не нуждающейся в параметрах. Поэтому, наверное все эти %5 и %6 там утратят силу и значения будут иными. Наверное, это будет выглядеть примерно так?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@echo off&setlocal enabledelayedexpansion&>nul echo %random%
 
for /l %%# in (0) do (
::variant1
call :run param1 param2 16 41 1 110
::variant2
call :run param3 param4 10 99 52 120
::variant3
call :run param5 param6 135 430 53 103
::variant4
call :run2 1350 4300 53 103
)
 
:run
start /min "" C:\123\123.exe %1 %2
call :rand %3 %4
timeout /t !rand! /nobreak
taskkill /f /im 123.exe
call :rand %5 %6
timeout /t !rand! /nobreak
 
:rand
set /a rand=%random%*(%2-%1+1)/32768+%1
 
:run2
start /min "" C:\555\555.exe
call :rand %1 %2
timeout /t !rand! /nobreak
taskkill /f /im 555.exe
call :rand %3 %4
timeout /t !rand! /nobreak
И выполнение все еще зациклено, только иным способом, да?
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
27.01.2019, 18:29
Можно так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off&setlocal enabledelayedexpansion&>nul echo !random!
 
for /l %%# in (0) do (
::variant1
call :run 16 41 1 110 param1 param2
::variant2
call :run 10 99 52 120 param3 param4
::variant3
call :run 135 430 53 103 param5 param6
::variant4
call :run 1350 4300 53 103
)
 
:run
start /min "" C:\123\123.exe %5 %6
call :rand %1 %2
timeout /t !rand! /nobreak
taskkill /f /im 123.exe
call :rand %3 %4
timeout /t !rand! /nobreak
 
:rand
set /a rand=!random!*(%2-%1+1)/32768+%1
Цитата Сообщение от gonome Посмотреть сообщение
И выполнение все еще зациклено, только иным способом, да?
1
 Аватар для gonome
1 / 1 / 1
Регистрация: 02.07.2013
Сообщений: 96
27.01.2019, 18:35  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Можно так:
Упс, мне кажется, вы упустили ту вторую программулину:
Windows Batch file
1
2
:run2
start /min "" C:\555\555.exe
Она нигде в вашем коде не фигурирует.
Её после 20 строки надо добавить?
0
6981 / 2873 / 1104
Регистрация: 06.06.2017
Сообщений: 9,753
27.01.2019, 18:52
Лучший ответ Сообщение было отмечено gonome как решение

Решение

Точно, не обратил внимания.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
@echo off&setlocal enabledelayedexpansion&>nul echo !random!
Set "Pr1="C:\123\123.exe""
Set "Pr2="C:\555\555.exe""
 
for /l %%# in (0) do (
::variant1
call :run !Pr1! 16 41 1 110 param1 param2
::variant2
call :run !Pr1! 10 99 52 120 param3 param4
::variant3
call :run !Pr1! 135 430 53 103 param5 param6
::variant4
call :run !Pr2! 1350 4300 53 103
)
 
:run
start /min "" %1 %6 %7
call :rand %2 %3
timeout /t !rand! /nobreak
taskkill /f /im 123.exe /im 555.exe
call :rand %4 %5
timeout /t !rand! /nobreak
 
:rand
set /a rand=!random!*(%2-%1+1)/32768+%1
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2019, 18:52
Помогаю со студенческими работами здесь

Задать интервал для Х
Всем пт! Увидел в видеоуроках такую запись: x := 1, 2 .. 10 Но задать ее не могу (Mathcad 15). Он просто пишет две точки и...

Задать интервал для обновления контрола
Здравствуйте! У меня есть ListBox <ListBox Name="lbTasks" Margin="3" HorizontalAlignment="Stretch"...

Как задать интервал для решения
есть уравнение, решаю: fsolve(f(x)=0), но получаю не то значение х. Как сказать, что надо искать a<x<b ?

Можно ли задать межстрочный интервал для Label
Всем доброго дня Можно ли задать межстрочный интервал для Label в WinForms? Что-то вроде line-height в CSS. Когда длинный текст в...

Задать междустрочный интервал для тега абзаца
Прошу прощения, но даже незнаю к какой ветке отнести данный вопрос, поэтому напишу тут. (если можно админ перенеси в соответствующую ветку)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru