forum.wfido.ru  

Вернуться   forum.wfido.ru > Прочие эхи > RU.WINDOWS.XP

Ответ
 
Опции темы Опции просмотра
  #1  
Старый 06.02.2017, 22:52
Aleksandr Volosnikov
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 07.02.2017, 07:31
Oleg Redut
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 07.02.2017, 07:31
Eugene Muzychenko
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 07.02.2017, 22:01
Aleksandr Volosnikov
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 07.02.2017, 22:01
Aleksandr Volosnikov
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 08.02.2017, 08:13
Oleg Redut
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 08.02.2017, 09:02
Alexandr Strelnikov
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 08.02.2017, 09:31
Eugene Muzychenko
Guest
 
Сообщений: n/a
По умолчанию Ст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  
Старый 08.02.2017, 10:30
Oleg Redut
Guest
 
Сообщений: n/a
По умолчанию Ст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 (пока работает)
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 18:48. Часовой пояс GMT +4.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot