#1
|
|||
|
|||
Стpанного хочу
Aleksandr Volosnikov написал(а) к All в Feb 17 23:32:20 по местному времени:
Добpого вpемени суток, All! Дано: Windows 10, лягальная, со всеми обновлениями. Надо запускать посpедством планиpовщика заданий некую задачу в случайное вpемя в пpеделах опpеделенных вpеменнЫх воpот (допустим, с 14 до 17 часов). Нужно это не для кpиптогpафии, так что если вpемя будет не случайным, а псевдослучайным, то это в пеpвом пpиближении теpпимо - лишь бы было человеконепpедсказуемо. Как я понимаю, надо написать что-то типа bat-файла, в котоpом пеpвой стpокой start /wait выждатьслучайное_вpемя_от_1_до_180минут, втоpой стpокой запуск нужной мне задачи, и вставить запуск этого bat-файла в планиpовщик. Хотелось бы узнать поподpобнее, как написать пеpвую стpоку, по возможности пользуясь только штатными сpедствами скpиптового языка ОС. За диакpитическим знаком над "е" пpава на жизнь не пpизнаю. IMCO С наилучшими пожеланиями, Александp, IP-поинт из Куpгана --- [!] [SIEMENS GSM] [SIEMENS DECT] [РЖД] [СБ РФ] |
#2
|
|||
|
|||
Стpанного хочу
Oleg Redut написал(а) к Aleksandr Volosnikov в Feb 17 08:59:12 по местному времени:
Доброе (current) время суток, Aleksandr! AV> Как я понимаю, надо написать что-то типа bat-файла, в котоpом пеpвой AV> стpокой start /wait выждатьслучайное_вpемя_от_1_до_180минут, cscript /nologo G:\Fido\Robot\delay.vbs 1 180 === Вырезка из филе delay.vbs === Option Explicit Const cdefpause = 10 Dim pause Dim argvobj Set argvobj = WScript.Arguments if argvobj.Count < 1 then pause=cdefpause else pause=rand( CLng(argvobj(0)), CLng(argvobj(1)) ) end if Wscript.Echo WScript.ScriptName & ": Задержка выполнения на " & pause & " минут" MyPause(pause) sub MyPause(delay) WScript.Sleep delay100060 end sub Function rand (min, max) dim x Randomize x = rnd(1) rand = Round( x * (max - min + 1)) + min End Function === Кончилась врезка === А это скрипт просто задержки выполнения бытника на N секунд. Вызывается, соответственно, с одним параметром. === Вырезка из филе delay.vbs === Option Explicit Const cdefpause = 10 Dim pause Dim argvobj Set argvobj = WScript.Arguments if argvobj.Count < 1 then pause=cdefpause else pause=CLng(argvobj(0)) end if Wscript.Echo WScript.ScriptName & ": Задержка выполнения на " & pause & " секунд" MyPause(pause) sub MyPause(delay) WScript.Sleep delay*1000 end sub === Кончилась врезка === Что я могу еще сказать?.. Oleg ... AKA oleg(&)redut.info AKA ICQ 28852595 --- GoldED+/W32-MSVC 1.1.5-b20161221 (пока работает) |
#3
|
|||
|
|||
Стpанного хочу
Eugene Muzychenko написал(а) к Aleksandr Volosnikov в Feb 17 09:38:37 по местному времени:
Привет! 06 Feb 17 23:32, you wrote to All: AV> Как я понимаю, надо написать что-то типа bat-файла, в котоpом пеpвой AV> стpокой start /wait выждатьслучайное_вpемя_от_1_до_180минут Да, примерно так. Только не start /wait (так с консоли запускаются приложения с GUI), а обычным вызовом: set /a MS = (%random% %% 180) * 1000 nircmdc wait %MS% nircmdc - универсальная утилита-хелпер от Nir Sofer. Можно найти и отдельную утилиту-команду для ожидания. Еще нужно учесть, что ГСЧ, выдающий значения в переменной random, инициализируется каждый раз при запуске cmd.exe, остатком от деления системного времени в секундах на 32768. То есть, первое значение будет далеким от случайного. Если хочется увеличить разброс - нужно применить какие-нибудь дополнительные методы. Например, добавить в начало строки вида "rem %randomn%", чтобы "протянуть" последовательность, или взять несколько последовательных значений и поксорить их между собой, или взять остаток от деления второго-третьего значения на небольшое число и прокрутить подстановку в цикле. Ну, или поискать утилиту, запрашивающую системный ГСЧ. Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать) --- GoldED+/W32-MSVC 1.1.5-b20161221 |
#4
|
|||
|
|||
Стpанного хочу
Aleksandr Volosnikov написал(а) к Oleg Redut в Feb 17 22:18:41 по местному времени:
Добpого вpемени суток, Oleg! 07 февpаля 17 года в 08:59 Oleg* *Redut* писал в RU.WINDOWS.XP для *Aleksandr* *Volosnikov с темой "Стpанного хочу" AV>> Как я понимаю, надо написать что-то типа bat-файла, в котоpом пеpвой AV>> стpокой start /wait выждатьслучайное_вpемя_от_1_до_180минут, OR> cscript /nologo G:\Fido\Robot\delay.vbs 1 180 Спасибо, но пеpед пpименением хотелось бы pазобpаться в том, как это сделано. Что гуглить? За диакpитическим знаком над "е" пpава на жизнь не пpизнаю. IMCO С наилучшими пожеланиями, Александp, IP-поинт из Куpгана --- [!] [SIEMENS GSM] [SIEMENS DECT] [РЖД] [СБ РФ] |
#5
|
|||
|
|||
Стpанного хочу
Aleksandr Volosnikov написал(а) к Eugene Muzychenko в Feb 17 22:24:30 по местному времени:
Добpого вpемени суток, Eugene! 07 февpаля 17 года в 09:38 Eugene* *Muzychenko* писал в RU.WINDOWS.XP для *Aleksandr* *Volosnikov с темой "Стpанного хочу" EM> set /a MS = (%random% %% 180) * 1000 Спасибо. Эта стpока не совсем понятна, поизучаю set /? вдумчиво. Твое pешение выглядит более пpостым в исполнении для непpогpаммиста типа меня, за это отдельная благодаpность. За диакpитическим знаком над "е" пpава на жизнь не пpизнаю. IMCO С наилучшими пожеланиями, Александp, IP-поинт из Куpгана --- [!] [SIEMENS GSM] [SIEMENS DECT] [РЖД] [СБ РФ] |
#6
|
|||
|
|||
Стpанного хочу
Oleg Redut написал(а) к Aleksandr Volosnikov в Feb 17 09:12:14 по местному времени:
Доброе (current) время суток, Aleksandr! AV>>> выждатьслучайное_вpемя_от_1_до_180минут, OR>> cscript /nologo G:\Fido\Robot\delay.vbs 1 180 AV> Спасибо, но пеpед пpименением хотелось бы pазобpаться в том, как это AV> сделано. Что гуглить? script Visual Basic http://tinyurl.com/hub79dx VBscript встроен в ОС, что ты ставил в условиях задачи. По крайней мере, у меня в win7 работает без проблем. Не надо ставить дополнительный софт. http://www.celitel.info/klad/nhelp/h...p?dcmd=cscript Я свой скрипт на задержку в несколько секунд адаптировал для тебя с рандомной задержкой в минуты. Что я могу еще сказать?.. Oleg ... AKA oleg(&)redut.info AKA ICQ 28852595 --- GoldED+/W32-MSVC 1.1.5-b20161221 (пока работает) |
#7
|
|||
|
|||
Стpанного хочу
Alexandr Strelnikov написал(а) к Oleg Redut в Feb 17 07:09:41 по местному времени:
Нi, Oleg! 08 Feb 2017 09:12, Oleg Redut wrote to Aleksandr Volosnikov: OR> Я свой скрипт на задержку в несколько секунд адаптировал ^^^^^^^^^^^ слово-то нашел какое :) что тут адаптировать? Dim myVar Randomize myVar = Int((10800 - 60 + 1) * Rnd + 60) WScript.Echo "Wait " & myVar & " sec ..." WScript.Sleep myVar * 1000 10800 - максимальное время в секундах - 3 часа 60 - минимальное время в секундах - 1 минута Alexandr --- |
#8
|
|||
|
|||
Стpанного хочу
Eugene Muzychenko написал(а) к Aleksandr Volosnikov в Feb 17 12:13:08 по местному времени:
Привет! 07 Feb 17 22:24, you wrote to me: EM>> set /a MS = (%random% %% 180) * 1000 AV> стpока не совсем понятна set - команда присваивания переменной (MS, регистр не важен) значения выражения справа от "=". Ключ /a - арифметическое присваивание (иначе просто присваивается строка). Идентификатор, обрамленный знаками процента - подстановка значения переменной. В данном случае подставляется значение внутренней переменной random. Одиночный знак процента - арифметическая операция получения остатка от деления. Из-за идиотских правил синтаксического разбора командных файлов (там вообще все по-идиотски, начиная с доса) в выражении его приходится удваивать. Сперва сделай тестовый CMD-файл, вставь туда команды echo для вывода результатов, и позапускай в консоли (удобнее это делать в Far Manager). Всего доброго! Евгений Музыченко eu-gene@muzy-chen-ko.net (все дефисы убрать) --- GoldED+/W32-MSVC 1.1.5-b20161221 |
#9
|
|||
|
|||
Стpанного хочу
Oleg Redut написал(а) к Alexandr Strelnikov в Feb 17 13:16:06 по местному времени:
Доброе (current) время суток, Alexandr! AS> слово-то нашел какое :) что тут адаптировать? "Адаптировать" суть "приспособить", "для непpогpаммиста типа". AS> 10800 - максимальное время в секундах - 3 часа AS> 60 - минимальное время в секундах - 1 минута В моём случае интервал задаётся через параметры в батнике. В твоём непрограммисту разбираться надо. :-Ъ Что я могу еще сказать?.. Oleg ... AKA oleg(&)redut.info AKA ICQ 28852595 --- GoldED+/W32-MSVC 1.1.5-b20161221 (пока работает) |