Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Выполнение задачи со сдвигом.

Ответить
Настройки темы
CMD/BAT - Выполнение задачи со сдвигом.

Пользователь


Сообщения: 114
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Через планировщик запускаю скрипт копирования файлов. Копирование идет через узкий канал. Поэтому хотелось иметь сдвиг по времени. Или возможность запускать скрипт в 50 случаев. Скажем запускаем скрипт получаем переменную рандом и если она меньше Х скрипт запускаем. Если не повезет и скрипт не запустится, то нечего страшного – просто он запустится при старте виндовс и будут тормоза 15-45 мин (чем больше одновременно включат чем дольше). В целом так сейчас и происходит ((. Дабы файлы месятся в источнике раз в 1-2 месяца. Но все ровно не удобно коллапс создается по утрам.


написал тестовый но переменная рандом не меняется((

Код: Выделить весь код
FOR /L %%a IN (0,1,1000) DO (

set /a random10=%random%/3277
If %random% GTR 50 ( echo true2 %random% >>888.txt ) ELSE ( echo false2 %random% >>999.txt )
)

Отправлено: 18:21, 16-10-2017

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата krasavchik0:
Через планировщик запускаю скрипт копирования файлов. »
Как настроен запуск? При старте windows или по назначенному времени? На чем организован скрипт копирования, cmd? Версия windows?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 18:58, 16-10-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


krasavchik0, Вы не могли бы перевести на русский? Ваша задача непонятна, а выбранное Вами решение нуждается в обосновании.

Отправлено: 19:05, 16-10-2017 | #3


Пользователь


Сообщения: 114
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Как настроен запуск? При старте windows или по назначенному времени? На чем организован скрипт копирования, cmd? Версия windows? »
Пока настроен в планировщике задании при включении ПК. Задание с правами система.

Но хочу "дергать" раз в 3 часа по времени. Так как разливаю по АД то индивидуально писать разное время всем не интересно.

Да скрипт в bat банальный это запускает планировщиком "При запуске"
Код: Выделить весь код
robocopy "\\dc\distr\ххх" "C:\Program Files (x86)\хххх" /MIR /Z /R:3 /W:10 /LOG:%LogLocationDir%\%NameBat%\%date%_%NameBat%_%computername%_%username%_dd.log
А это хочу запускать по времени. Но хотелось иметь сдвиг как он сделать в домены политиках по сути мне нужен аналог GPO
"Случайная величина, добавляемая к интервалу времени обновления во избежание одновременных запросов групповой политики всеми клиентами. "

Код: Выделить весь код
robocopy "\\dom\distr\ххх" "C:\Program Files (x86)\хххх" /E /Z /R:3 /W:10 /LOG:%LogLocationDir%\%NameBat%\%date%_%NameBat%_%computername%_%username%_dd.log
Цитата Iska:
Вы не могли бы перевести на русский? Ваша задача непонятна, а выбранное Вами решение нуждается в обосновании. »
Я синхронизирую папку на ПК. Команды выше. Вот и хочу эту синхронизацию разнести по времени. Ручками это делать не хочу, через планировщик.
Вот и хотел в скрипте делать аналог орла и решки. Орел запускать, решка нет. Путем вероятностей сделать, что бы скорее всего скрипт запустился у 10 (Опять переживу если он запустится всего 5 или 35% ) процентов пользователей. Супер точность не нужна.

При этом я понимаю и допускаю, что могут быть случае когда на одном ПК выпал орел за неделю 10 раз. А у другого не разу... не страшно, ну не повезло пользователю. Будет ждать долго загрузки((.

Отправлено: 20:02, 16-10-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


krasavchik0, %RANDOM% здесь точно не пригоден. Он слишком «псевдо» для этого. Возьмите какой-нибудь WSH или PoSH. Например, WSH/vbscript:
Код: Выделить весь код
Option Explicit

Randomize Timer

If Int(101 * Rnd()) <= Int(WScript.Arguments.Item(0)) Then
	WScript.Quit 0
Else
	WScript.Quit 1
End If
И пакетный файл:
Код: Выделить весь код
cscript.exe //nologo "Sample.vbs" 50 && robocopy "\\dc\distr\ххх" "C:\Program Files (x86)\хххх" /MIR /Z /R:3 /W:10 /LOG:%LogLocationDir%\%NameBat%\%date%_%NameBat%_%computername%_%username%_dd.log
где «50» — значение процента вероятности срабатывания. Например, значение «20» приведёт к тому, что robocopy будет исполняться в одном случае из пяти.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:15, 16-10-2017 | #5


Пользователь


Сообщения: 114
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Вы не могли бы перевести на русский? Ваша задача непонятна, а выбранное Вами решение нуждается в обосновании. »
кстати вы правы. Как вариант генерировать случайное время и таймер замедления. Ну в челом все это грабли пока остановлюсь на вероятностях.

Отправлено: 15:52, 17-10-2017 | #6


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


krasavchik0, Ваша задача не очень понятна, но внесение вероятности - угарная идея, которая скорее всего приведёт к головной боли . Попробую предложить нечто более предсказуемое.

1. В идеале, как я понял, все компьютеры должны обновиться за 10 дней (10%*10дней=100%), то есть каждый компьютер должен обновиться раз в 10 дней (в идеале).
2. Каждый компьютер имеет IP, последняя цифра которого меняется от 0 до 9
3. Каждый день характеризуется датой, вторая цифра в значении дня меняется от 0 до 9
Сравним п.2 и п.3, при равенстве цифры дня и цифры IP запустим что надо.
ИМХО, такой процесс более предсказуем.
Код: Выделить весь код
@Echo Off
CLS

Call :IPping "LastIP"
Call :DaySecond "Day2"

If "%LastIP%"=="%Day2%"  (
	Echo: Запускаем синхренезацию :) 
) Else (
	Echo Для этого компа "%LastIP%" сегодня "%Day2%" ничего не запускаем
)
GoTo :Eof

:IPping 
	Set "%~1="
	FOR /F "tokens=2 delims=[]" %%b in ('ping -4 -n 1 %ComputerName%') Do If Not "%%a"=="" (set _IP=%%b &GoTo :Continue)
	GoTo :Eof
	:Continue
	Set "_IP=%_IP: =%"
	Set "%~1=%_IP:~-1%"
GoTo :Eof

:DaySecond
	Set "%~1=%Date:~1,1%
GoTo :Eof
Понятно, это не идеал: кто-то попадёт раз в месяц на выходной, кому-то повезёт 31 и 1 числа.
Сколько машин должны сделать копии? Сколько машин одновременно могут, на Ваш взгляд, это делать? И сколько при этом для них потребуется времени? Как вариант, если компы включаются приблизительно в одно время, делать задержку копирования в часы для групп компов в зависимости от, например, того же IP.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 17-10-2017 в 16:39.


Отправлено: 16:13, 17-10-2017 | #7


Пользователь


Сообщения: 114
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Сколько машин должны сделать копии?[/post]
30
Цитата megaloman:
Сколько машин одновременно могут, на Ваш взгляд, это делать?
[/post]
Честно сложный вопрос, Машины имеют разную ширину канала от 2 мегабит до 10 мегабит. То есть максимальная скорость у некоторых машин зарезана шереспером, что бы ПО видеонаблюдения не забило канал.

Цитата megaloman:
И сколько при этом для них потребуется времени?
[/post]
Обычно мегабайт 600-800 МБ
От 10 до 50 минут примерно. В зависимости от шейпера.

Цитата megaloman:
Как вариант, если компы включаются приблизительно в одно время, делать задержку копирования в часы для групп компов в зависимости от, например, того же IP. »
Не получится при включении я еще удаляю старые версии и если пользователь будет работать в неё, то программа упадет. Хотя и при загрузке программы если пользователь вдруг её случайно закроет и при повторном открытии уже будет ошибка, так как программа увидит свежую версию, но не будет знать, что она не полностью еще скачена.....мда косяк....


Вообщем действую по старинке обновляю папку вечером и все ПК в ребут. К утру будет все ок)).

Отправлено: 18:58, 17-10-2017 | #8


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


krasavchik0,
Цитата krasavchik0:
при включении я еще удаляю старые версии и если пользователь будет работать в неё, то программа упадет. »
Качайте обновление в промежуточную папку, при благополучном завершении скачивания скопируйте туда мизерный файлик-флаг. Далее, сделайте запуск софта у пользователя командным файлом, который проверит его наличие, и при наличии этого файла-флага в промежуточной папке сначала переместит всё скачанное в рабочую папку, а затем уж запустит пользовательский софт. Если обновлерие скачано неполностью, флага нет, ничего никуда не перемещаем, запускается имеющийся софт.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 20:11, 17-10-2017 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Выполнение задачи со сдвигом.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Скрытое выполнение задачи через hidcon LightSoul Скриптовые языки администрирования Windows 1 13-09-2017 13:57
Занимательные задачи SOKRAT Флейм 223 26-09-2012 09:26
V. 2010 - Завершение задачи 2poisonS Microsoft Exchange Server 0 16-09-2010 10:38
Выполнение манипуляций со всеми компьютерами в группе безопасности madmax24 Microsoft Windows NT/2000/2003 8 21-02-2008 12:18
Аналитические задачи noname00.pas Программирование и базы данных 4 12-12-2001 15:04




 
Переход