Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   отсчитать время до запуска bat... (http://forum.oszone.net/showthread.php?t=255680)

spk151 06-03-2013 22:45 2105805

отсчитать время до запуска bat...
 
Привет всем! Подскажите кто может. Нужен код, который будет делать следующие вещи:
отсчитать определённое время с момента запуска (например 6 месяцев) до запуска бат-команды, и по истечению этого времени, запустить эту команду.

Iska 06-03-2013 23:15 2105817

spk151, создайте задание в планировщике.

spk151 06-03-2013 23:19 2105823

нужен именно бат, т.е. установка в одно нажатие

zion87 07-03-2013 07:00 2105964

Первый запуск - настройка(сколько месяцев и где храним)
Код:

@Echo Off
Echo Где храним бат(Например C:)
Set /p Put=
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "bat" /t REG_SZ /d "%Put%\new.bat" /f
Echo Сколько месяцев ждать
Set /p Monts=
Set Year=%Date:~6%
Set /a m=%Date:~3,-5%+%Monts%
If %m% LEQ 9 Set m=0%m%
Echo @Echo Off >%Put%\new.bat
Echo If %%Date:~3%% == %m%.%Year% Start PROGRAMMA.EXE >>%Put%\new.bat
Echo Exit >>%Put%\new.bat

Меняем Start PROGRAMMA.EXE на то что нужно
P.S. здесь кодировка точно 866 )))

gora 07-03-2013 08:53 2105993

zion87, пара сомнений:
- если компьютер работает круглосуточно и не выключается?
- если сумма в переменной m превысит 12 (или 24)?

spk151 07-03-2013 13:17 2106151

zion87 спасибо, потестирую)

zion87 07-03-2013 16:34 2106311

Код:

@Echo Off
Echo Где храним бат(Например C:)
Set /p Put=
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "bat" /t REG_SZ /d "%Put%\new.bat" /f
Echo Сколько месяцев ждать
Set /p Monts=
Set Year=%Date:~6%
Set /a m=%Date:~3,-5%+%Monts%
:1
If %m% LEQ 9 Set m=0%m%
if %m% GTR 12 Goto :2
Echo @Echo Off >%Put%\new.bat
Echo If %%Date:~3%% == %m%.%Year% Start PROGRAMMA.EXE >>%Put%\new.bat
Echo Exit >>%Put%\new.bat
Exit
:2
Set /a m-=12
Set /a Year+=1
Goto :1

Цитата:

Цитата gora
- если сумма в переменной m превысит 12 (или 24)? »

- эта проблема решена
А вот с
Цитата:

Цитата gora
- если компьютер работает круглосуточно и не выключается? »

не хочется делать циклические проверки(забивать систему лишним процессом)

spk151 07-03-2013 21:24 2106430

zion87 извини за тупость, а рабочую версию кода не скинешь? Без пояснений, но работающую. А то я на хранении уже застрял :( А что будет дальше, подумать боюсь!:durak:И вместо ехе мне нужна бат-команда

zion87 07-03-2013 22:08 2106463

Цитата:

Цитата spk151
а рабочую версию кода не скинешь? »

а это какая?
Цитата:

Цитата spk151
Без пояснений »

эти пояснения часть кода(для того чтобы можно было легко ариентироваться)
Цитата:

Цитата spk151
И вместо ехе мне нужна бат-команда »

проблем не вижу, например Echo Тыры пыры!!!

spk151 07-03-2013 22:33 2106477

zion87,
Цитата:

Цитата zion87
Echo Где храним бат(Например C:) »

ну напиши пример, тебе это ничего не стоит, а мне гуглить пол ночи :search:

cameron 07-03-2013 23:14 2106503

есть подозрение, что это рецепт приготовления time-bomb

zion87 07-03-2013 23:23 2106506

Код:

@Echo Off
Echo Где храним бат(Например C:)
Set /p Put=
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "bat" /t REG_SZ /d "%Put%\new.bat" /f
Echo Сколько месяцев ждать
Set /p Monts=
Set Year=%Date:~6%
Set /a m=%Date:~3,-5%+%Monts%
:1
If %m% LEQ 9 Set m=0%m%
if %m% GTR 12 Goto :2
Echo @Echo Off >%Put%\new.bat
Echo If %%Date:~3%% == %m%.%Year% Start PROGRAMMA.EXE >>%Put%\new.bat
Echo Exit >>%Put%\new.bat
Exit
:2
Set /a m-=12
Set /a Year+=1
Goto :1

Уважаемый spk151, копируете в блокнот и нажимаете сохранить "имя.bat" с кодировкой 866 и запускаете BAT файл дальше вводите данные по запросу.

yurfed 07-03-2013 23:48 2106521

Цитата:

Цитата cameron
есть подозрение, что это рецепт приготовления time-bomb »

Меня тоже эта мысль посетила в первую очередь :)

spk151 08-03-2013 00:20 2106536

zion87, спасибо, начинаю уже сам потихоньку вникать :)
cameron, на самом деле, это просто жизненно необходимая для меня вещь. Просто выйдет по истечению срока табличка с напоминанием, что пора мне позвонить;) А что это за time-bomb? Есть готовые варианты?:)

yurfed 08-03-2013 00:26 2106541

Цитата:

Цитата spk151
Просто выйдет по истечению срока табличка с напоминанием, что пора мне позвонить »

Я думал вы скажете поздравить маму, папу, тётю, дядю :)
Цитата:

Цитата spk151
А что это за time-bomb? »

В один прекрасный момент (1 апреля, Новый год и тд) "взрывается бомба", которая рушит систему, всё что угодно, но до этого времени тихо сидит и ни кому не мешает.

Iska 08-03-2013 05:06 2106597

Цитата:

Цитата yurfed
Цитата:

Цитата cameron
есть подозрение, что это рецепт приготовления time-bomb »

Меня тоже эта мысль посетила в первую очередь »

Ага. В частности, отказ от использования Планировщика, мягко говоря, настораживает.
Цитата:

Цитата spk151
Просто выйдет по истечению срока табличка с напоминанием, что пора мне позвонить

Нда… :lol:. Очень удачный пример, учитывая «простоту» работы с датами в пакетных файлах и указанный срок:
Цитата:

Цитата spk151
отсчитать определённое время с момента запуска (например 6 месяцев) »


spk151 08-03-2013 13:57 2106760

Цитата:

Цитата zion87
Echo Где храним бат(Например C: »

где храним или хранить? Допустим, храним. Автозапуск прописывает если я ставлю диск С, С:\new.bat\new.bat Если я создаю папку new.bat и помещаю туда батник он просто заново начинает настройку. Не пойму я, какой бат там нужно хранить :search:

yurfed 08-03-2013 14:13 2106773

Цитата:

Цитата spk151
С:\new.bat »

Не надо папку так называть. Назовите просто newbat без точки.

spk151 08-03-2013 14:14 2106775

можно конечно же написать вот так:

copy %0 C:\Windows\new.bat
reg add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v project /t REG_SZ /d C:\Windows\new.bat /f
@echo off
if 23.12.2012 LEQ %date% goto metka
exit
:metka
Echo off
msg ку ку)

но тогда число нужно будет менять ручками, а хочется на автомате, вставил флешку, запустил бат и голова не болит :)

zion87 08-03-2013 14:18 2106779

храним
Цитата:

Цитата zion87
Echo Где храним бат(Например C:) »

если необходимо хранить в корне диска c:\ то пишем C:(без слеша) а если в какой то папке, то например c:\new(без слеша)
там храниться батник который получится после настройки ....

spk151 08-03-2013 14:19 2106780

Цитата:

Цитата yurfed
Не надо папку так называть. Назовите просто newbat без точки. »

не думаю, что это решит проблему

yurfed 08-03-2013 14:22 2106782

Цитата:

Цитата spk151
не думаю, что это решит проблему »

Надо попробовать и всё. Думать будете если не получится.

spk151 08-03-2013 14:24 2106783

zion87, бат после настройки там не появляется

zion87 08-03-2013 21:11 2107005

spk151, У вас win 7? Запуск с правами администратора???

spk151 09-03-2013 13:46 2107317

zion87, XP

oleggyunter 09-03-2013 20:32 2107527

spk151, Точно Time bomb . Карябаю напоминалку по дате и времени , а если тупо по времени (полгода) - 100% засада. Попытка залочить комп с целью обращения к писателю за помощью . 100% . без обид . ЛОГИКА.

spk151 14-03-2013 01:41 2110752

oleggyunter, ну да, ты меня удивил. Логика просто железная. Почитай внимательно вопрос темы, там ничего не было сказано про угадай нахрена мне это надо :read:
Собственно, я нашел на форуме ответ на свой вопрос. Код gora, подошел:



@echo off
:: Первый запуск скрипта и запоминание даты в файл fstStrt.lst
:: Скрипт после этого НЕ перемещать, иначе не найдет файл fstStrt.lst !!!
If Not Exist fstStrt.lst Echo %date%>fstStrt.lst& Exit
:: Второй и последующие запуски скрипта
For /F %%I In (fstStrt.lst) Do Set fstStrt=%%I
:: Для тестов можно раскомментировать строку и вписать в нее дату первого запуска
:: Set fstStrt=25.04.2013
:: Период, в течении которого будет работать, вписать в строку ниже
Set prd=180
Call :JDat %date%
Set less=%JDate%
Call :JDat %fstStrt%
Set /a less=JDate+prd-less
If %less% GTR 0 (
Echo Осталось дней: %less%
Ping -n 5 localhost>Nul
) Else (
Echo
msg * ку ку ёпта!!!
)
Exit
:JDat
Set dat=%1
Set /a m=(1%dat:~3,2%-114)/12
Set /a JDate=1%dat:~0,2%+((1%dat:~3,2%-102-m*12)*367+((%dat:~6%+m)*487-49-(%dat:~6%+m)/100)*9)/12
GoTo:EOF



gora, к тебе вопрос, как всё это дело с флешки, путем запуска батника, скопировать на комп и в автозагрузку, что бы fstStrt.lst находился рядом с батником, а не там откуда я пытаюсь его запустить. Не буду перечислять, что я уже попробовал и свои догадки, ибо не позориться :dont-know жду от тебя единственно правильного ответа :)

gora 14-03-2013 10:52 2110891

Цитата:

Цитата spk151
жду от тебя единственно правильного ответа »

Считаю, что тему следует пометить "Решенной" и закрыть.
Причины:
1 Решения задачи, озвученной ТС в первом посте, в ветке имеются.
2 Дальнейшие уточнения, а именно:
- отказ от использования планировщика
- использование флешки как источника
Цитата:

Цитата spk151
вставил флешку, запустил бат и голова не болит »

- место сохранение батника
Цитата:

Цитата spk151
copy %0 C:\Windows\new.bat »

- прописывание его в автозагрузку
- невнятность объяснения преследуемых целей
Цитата:

Цитата spk151
это просто жизненно необходимая для меня вещь. Просто выйдет по истечению срока табличка с напоминанием, что пора мне позвонить А что это за time-bomb? Есть готовые варианты? »

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

spk151 14-03-2013 12:17 2110945

Цитата:

Цитата gora
Считаю, что тему следует пометить "Решенной" и закрыть »

а я, раз на то пошло, считаю, что её нужно тупо удалить. Здесь не было, обсуждений моего вопроса. :read: zion87, Один пытался помочь, но я так и не понял как его код работает.
Цитата:

Цитата gora
- отказ от использования планировщика »

планировщик планирует лишь на месяц, а мне нужно больше...
Цитата:

Цитата gora
... наводят на мысли о неблаговидных целях дальнейшего использования полученного здесь решения. »

Да! Это очень вредоносный код! Не нужно, не говори мне :laugh: И спасибо за решение! Хоть ты этого и не хотел.
Короче, всем участникам спасибо за активную помощь, сам разберусь. Гугл поможет. :yes:


Время: 19:40.

Время: 19:40.
© OSzone.net 2001-