Бат файл для запуска программы по таймеру

Обновлено: 05.07.2024

Рассмотрим основные варианты организации ожидания ( паузы ) в bat / cmd файлах.

Для решения этой задачи в операционных системах, начиная с VISTA, присутствует команда timeout. Так, для ожидания 10 секунд следует выполнить команду.

Если не использовать параметр /NOBREAK, то ожидание может быть прервано нажатием любой клавиши.

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

На просторах интернета можно найти утилиту wait.exe. Точнее, даже несколько разных, включая исходные тексты программы. Поэтому я не привожу здесь параметров вызова, смотрите их описание.

Для организации паузы можно использовать утилиты, ожидающих определенное событие заданное время.
При условии, что событие не наступит, получается ожидание требуемого интервала времени.
Так, паузу можно создать при помощи команды ping:

-n 1 - выполнить один запрос
-w 100000 - ждать ответа 100 секунд
(значение указывается в миллисекундах)
10.10.254.254 - IP адрес, который заведомо не существует в локальной сети (важно!), следовательно, никогда не ответит на ping т. е. событие не наступит.
>nul - перенаправление всего вывода команды ping в никуда.

Еще одно решение - посылать пинг на заведомо существующий адрес - т. е. самому себе. Количество посылаемых пакетов должно быть на единицу больше количества ожидаемых секунд. Так, для ожидания 5 секунд следует выполнить команду:

В том же пакете Ресурскит есть утилита choice, которую при известной доле извращенности можно использовать для тех же целей:

@echo off :: Пример использования:: Некоторые действия echo Сейчас %time:

0,-3% :: пауза на 15 секунд call :sleep 15 :: Другие действия echo Сейчас %time:

0,-3% pause goto :EOF :sleep echo Пауза на %1 секунд. set /a ftime=100%time:

6,-3%%%100+%1 if %ftime% GEQ 60 set /a ftime-=60 :loop set ctime=%time:

6,-3% if /i %ftime% NEQ %ctime% goto :loop exit /b 0

Данная процедура позволит организовать задержку в выполнении. Время ожидания должно быть меньше 60 сек.


Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуется регистрация).

Новый раздел о средствах командной строки в рамках этого же проекта расположен здесь

Добрый день. Прошу прощения если пишу не в ту ветку форума. Нужна ваша помощь в написании скрипта который мог бы запускать определенный exe файл в зависимости от времени на компьютере. К сожалению я сам работал очень мало со скриптами и сам написать такой не смогу

Подробнее о задаче: допустим включается компьютер с 8 утра и до 5 вечера в любое время в этот момент должен запуститься файл 1.exe, и он же должен сам закончить свое выполнение часов в 16:30 а Если компьютер включается с 0 часов до 7 утра то должен запуститься файл 2.exe. и так же закончить свое выполнение часов в 6 утра. Предполагается что данный скрипт будет запускаться планировщиком задач при включении компьютера. оба файла лежат по пути (C:\Program Files\cpustats)

Помогите пожалуйста. Очень нужно для работы

Если нужны доп. данные пишите. Заранее большое спасибо

Конфигурация компьютера
Процессор: Intel(R) Core(TM) i3 CPU M 370 2.40GHz, ядер: 2, логических процессоров: 4
Память: 8,00 ГБ
ОС: Windows 10 Pro x64
p.igor.kin,
в том же планировщике делаете задачу на запуск 1.exe вместе с вкл компа и завершить задачу в 16:30
по аналогии для 2.exe

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

в том же планировщике делаете задачу на запуск 1.exe вместе с вкл компа и завершить задачу в 16:30
по аналогии для 2.exe »

Извините пожалуйста а как сделать в планировщике 1 задачу для старта при включении компа и завершить её в 16:30 так что бы эта задача работала каждый день? Там есть такой пункт завершить задачу но там ставиться число и время, тоесть эта задача отработает 1 раз

И самое главное как в планировщике задать запуск 1.exe с 8 до 17 в любове время и запуск 2.exe с 0 до 7 ?

Последний раз редактировалось p.igor.kin, 29-06-2017 в 13:23 .

Не понимаю. Запускать при включении? Или после включения в неопределённое случайное время? »
Компьютер может быть включен как в 8 часов так в 9,10, 11 и т.д. Дак вот нужно что бы скрипт запускался при включении компьютера(это я планирую сделать через планировщик или поставить тупо в автозагрузку) Дальше скрипт должен смотреть сколько времени на компьютере и уже в зависимости от времени запускать файл либо 1.exe либо 2.exe p.igor.kin, если компьютер включили до восьми часов, 1.exe вообще не должен запускаться?
Конфигурация компьютера
Процессор: Intel(R) Core(TM) i3 CPU M 370 2.40GHz, ядер: 2, логических процессоров: 4
Память: 8,00 ГБ
ОС: Windows 10 Pro x64
а сколько времени нужно для работы, например, 1.exe, если компьютер включили в 16:25, хватит 5ти минут ему, ведь в 16:30 он должен быть остановлен и вопрос Busla тоже актуален. p.igor.kin, В Вашей проблеме 2 задачи.
1. В зависимости от времени включения компьютера необходимо при включении запустить ту или иную программу. Это делает один скрипт и это одна задача в планировщике при включении.
2. В заданное время необходимо завершить указанную программу. Это сделает другой скрипт и это вторая задача планировщика. Если таких программ несколько, то на завершение каждой необходимо задание в планировщике на каждую задачу.
ИМХО, проще это реализовать vbs-скриптами.
Задача 1. Запускаем предметную программу в зависимости от того, когда запущен скрипт. Скрипт поместить в планировщик на включение. Пропишите вместо моих примеров реальные экзешники и диапазоны времени запуска. Сохраните скрипт в файл с расширением .vbs, например, Starter.vbs. Создайте на него задание в планировщике.
Возможно, в планировщике его надо запускать как, например:
C:\Windows\System32\wscript.exe Диск:\Путь\Starter.vbs Задача 2 (3). Принудительно завершаем указанный процесс. Для каждого - отдельное задание в планировщике. Сохраните скрипт в файл с расширением .vbs, например, ProgKill.vbs. Запускать его надо с параметром, например:
Диск:\Путь\ProgKill.vbs "notepad.exe".
Создайте на него задание в планировщике на нужное время.
Возможно, в планировщике его надо запускать как, например:
C:\Windows\System32\wscript.exe Диск:\Путь\ProgKill.vbs "notepad.exe"
На каждую программу задание в планировщике
а Если компьютер включается с 0 часов до 7 утра то должен запуститься файл 2.exe. и так же закончить свое выполнение часов в 6 утра »
В Вашей постановке нет логики: если, согласно утверждению, задача запустится в 6час 1 мин, то её никаким образом не убить в 6 часов
Поэтому надо чётко продумать хронологию событий: нельзя запускать программу после того, как Вы декларировали её завершение.

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

Последний раз редактировалось megaloman, 29-06-2017 в 21:41 .

p.igor.kin, Пытаюсь переосмыслить постановку, чтобы ограничиться одним скриптом и одним заданием в планировщике:
С 8 утра и до 16.30 вечера должна обязательно выполняться программа 1.exe, до 8.00 и после 17.00 её не должно быть.
Таких программ может быть несколько со своими интервалами работы и временем завершения.
Вот скрипт, который надо поместить в планировщик и в планировщике повторять его с интервалом, допустим, 5 мин.

бремени, времени, семени, темени, пламени, стремени, знамени, племени, имени, вымени

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

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

Друзья простите пожалуйста за долгое отсутствие уезжал в отпуск. Посмотрел то что вы тут накидали (варианты,идеи) не очень конечно понял. Может я так плохо объяснил а может скрипт такой сложный. Давайте поступим немного по другому.

Задача: Пользователь включает компьютер (это может быть в любое время) Нужен скрипт который при включении компьютера будет смотреть сколько времени на компьютере и будет запускать нужную программу. Предполагается что данный скрипт будет лежать по пути (C:\Program Files\cpustats и иметь название cpustats.vbs) и в планировщике будет создана задача:

Тригер: при запуске системы
Действие: запуск программы (C:\Program Files\cpustats\cpustats.vbs)

Условия запуска программ:

Если время с 8:00 до 18:00 то запустить программу (C:\Program Files\cpustats\dau\cpustats.exe)
Если время с 20:00 до 6:00 то запустить программу (C:\Program Files\cpustats\night\cpustats.exe)

На данный момент воспользовался скриптом пользователя megaloman за что ему огромное спасибо. ниже выкладываю поправленый скрипт под мои условия. Сохранил его как cpustats.vbs

Вот, нашёл в Сети рабочий пример для устройства задержки времени
(пауза, тайм-аут) при выполнении команды в bat-файле:

echo wscript.Sleep 30000>"%temp%\sleep30.vbs"
cscript //nologo "%temp%\sleep30.vbs"
del "%temp%\sleep30.vbs"

Работает в любой ОС Windows, аж бегом

Зачем нужна задержка (пауза, тайм-аут) при выполнении команды в bat-файле?

У всех – по-разному.
Лично мне она (пауза) понадобилась вот для чего:

– Взял простенький bat-файл для очистки временных папок и бросил его в АВТОЗАГРУЗКУ
Прикололся, типа – чтобы этот батничек чистил временные каталоги при запуске системы.
Текст батника вытащил из стандартного Total Commander-a:

cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:\Windows\Prefetch &del *.pf 2>nul &cd/d C:\Windows\Temp&rd/s/q c:\windows\temp 2>nul

Всё-бы ничего, да только такая процедура очистки временных папок при загрузке –
сносит полезные файлы и система выдаёт окно ошибки

Досадно.
Однако, устройство паузы в 30 сек. решило всю проблему.
И система грузится, и папки темпов - чистятся.

Полный текст bat-файла стал теперь таким:

echo wscript.Sleep 30000>"%temp%\sleep30.vbs"
cscript //nologo "%temp%\sleep30.vbs"
del "%temp%\sleep30.vbs"
cmd /c title Очистка временной папки &cd/d %temp%&rd/s/q %temp% 2>nul &cd/d %tmp%&rd/s/q %tmp% 2>nul &cd/d C:\Windows\Prefetch &del *.pf 2>nul &cd/d C:\Windows\Temp&rd/s/q c:\windows\temp 2>nul

Прим. Лошади понятно, что изменив цифру 30 на своё значение,
можно получить другие величины паузы в секундах в bat-файле.

Начиная с VISTA, в операционных системах семейства Windows присутствует команда TIMEOUT. Эта команда принимает значение таймаута, равного фиксированному периоду времени ожидания (в секундах) до выполнения команды или ожидание до нажатия клавиши. Имеется также параметр, зaдающий игнорирование нажатий клавиш.

Синтаксис
TIMEOUT [/T] 50 [/NOBREAK]

Параметры

/T 50 Таймаут = 50 сек. Время ожидания в секундах. Допустимый интервал: от -1 до 99999 секунд. Значение, равное -1 задает неограниченное время ожидания до нажатия клавиши. /NOBREAK Игнорировать нажатия клавиш, ждать указанное время. /? Отображение справки в командной строке.

TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1

Весь текст примера можно внести в bat-файл,
запустить и посмотреть, как это работает.
Впечатляет.

Простая и быстрая установка таймера через командную строку

  1. Открыть меню «Пуск» → написать в строке поиска: cmd → запустить соответствующую программу нажатием левой кнопкой мыши;
  2. Ввести без кавычек команду «shutdown/s/t600», где значение 600 – время в секундах, через которое предполагается завершение работы компьютера → нажать клавишу Enter на клавиатуре.

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

CMD с командой shutdown.

Рисунок 1. Прописываем команду shutdown в командной строке.
Таймер при необходимости можно отменить.

Для этого снова запустите командную строку, введите «shutdown /a», нажмите Enter.

Теперь можно закрыть командную строку и уйти по важным делам со спокойной душой. Процесс завершения работы системы запустится автоматически.

Внимание!
Обязательно закройте все документы и иные программы, которые не будут использоваться. В противном случае компьютер не выключится, остановившись на шаге сохранения перед завершением сеанса, и будет ждать действий пользователя.

Если вы хотите, чтобы система принудительно закрывала все программы, добавьте параметр /f в команду из второго шага.

Пример: «shutdown /s /f /t 600». Далее мы рассмотрим способ установки таймера без командной строки при помощи создания ярлыка, а также .bat файла.
Это позволит экономить драгоценные часы жизни, в случае если вы собираетесь регулярно пользоваться отложенным выключением компьютера.

Создание ярлыка с таймером на отключение системы (для новичков)

Если вам необходимо часто ставить таймер отключения на определенное время, можно воспользоваться штатными средствами Windows 7, чтобы создать ярлык для отложенного завершения работы.

Перейдем к инструкции:

Для создания одного ярлыка с выделяющейся картинкой нужно выполнить всего несколько действий.

  1. Кликаем правой кнопкой мыши по пустому пространству на рабочем столе → подводим курсор к выпадающему меню «Создать» → выбираем «Ярлык»;
  2. Теперь вводим команду shutdown/s/f/t600, где цифра 600 – время до отключения в секундах (вы можете любое из расчета: 1 час = 3600с), а /f– параметр, который не позволит системе застопориться на этапе завершения сеанса → проверяем правильность введенной команды, переходим к следующему шагу;

Теперь можно подобрать ему иконку, чтобы в будущем быстро находить нужную кнопку в общей массе значков на рабочем столе.

  1. Нажимаем правой кнопкой мыши по ярлыку → выбираем пункт «Свойства»(в графе «Объект:» также можно изменить время отсчета для таймера);
  2. В этой же вкладке находим и кликаем на кнопку «Сменить значок…» (возможно, появится предупреждение об отсутствии картинок для системного файла shutdown.exe, которое просто стоит проигнорировать при помощи ОК);
  3. Выбираем любую подходящую иконку левой кнопкой мыши → подтверждаем изменения нажатием «ОК» → закрываем остальные окна.

Процедура точно такая же, за исключением команды: в этот раз нужно использовать shutdown /a, а также дать файлу другое название. Как видите, метод создания таймера при помощи ярлыка – очень прост.

Однако один файл подразумевает использование лишь одной команды.

Если при выключении компьютера вы хотите составить определенную последовательность действий, создайте .bat файл по инструкции в следующей главе. Однако сначала мы разберемся, как поставить таймер в режим работы «по расписанию» на Windows 7.

Настройка систематического отключения компьютера в планировщике заданий

Эта функция может пригодиться, если вы хотите отключать компьютер постоянно в определенный период. Например, для ограничения времени использования компьютера ребенком.

    Открыть «Планировщик заданий», введя соответствующий запрос в меню Пуск. В появившемся окне кликнуть на пункт «Создать простую задачу…»;

Теперь компьютер будет отключаться автоматически. Удаляется таймер в библиотеке планировщика заданий путем клика по задаче правой кнопкой мыши и выбора нужного пункта.

Создание .bat файла с простейшим таймером

Установка таймера описанным выше способом подойдет большинству пользователей.

Однако .bat файл, в отличие от ярлыка, теоретически подразумевает выполнение целого алгоритма команд.

В этой главе рассмотрим, как создать самый обычный код таймера на Windows 7, и усовершенствуем его в следующей.

    Открыть стандартную системную программу «Блокнот» (или создать текстовый документ и открыть его);

  1. Ввести/скопировать следующую последовательность команд, которая отвечает за работу простейшего таймера (где цифра 600 – время выключения системы в секундах, а /f– параметр для принудительного завершения сеанса);

Вы также можете изменить созданный файл, щелкнув по нему правой кнопкой мыши и выбрав соответствующий (второй сверху) пункт. Внимание!
Никогда не скачивайте .bat-файлы из непроверенных источников. В противном случае при запуске вредоносного «батника», вы можете потерять значительную часть важной информации. Обязательно проверяйте исходный код перед его использованием!

Такие команды, как: reg add, taskkill, label, del, rem и многие другие могут навредить вашей системе. Будьте бдительны. Простейший файл таймера создан.

Однако возможности «блокнотных» программ не ограничиваются одной командой. Далее мы усовершенствуем наш таймер, добавив несколько вспомогательных строк.

Улучшенный .bat-таймер (для опытных)

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

  • Таймер с возможностью ввода времени до отключения компьютера (без редактирования исходного кода);
  • Таймер, определяющий окончание загрузки файла (в браузере, торрент-клиентах и т. д.).

Улучшенный таймер с выбором времени до отключения в .bat-файле

Программы-таймеры выключения системы на Windows 7

  • Будильник, который можно поставить на утро, прибавив громкости в колонках. Так вы точно не проспите работу или другое важное событие;
  • Собственно, таймер отключения;
  • Секундомер, а также другие функции, количество которых разнится от программы к программе.

С примерами таких мини-приложений вы можете ознакомиться здесь.

Таймер – Будильник v. 2.5.1 (простой и удобный)

Будильник довольно прост в настройке.

Вы можете использовать эту программу в качестве помощника для утреннего пробуждения, для отложенного запуска любого ПО и в качестве таймера отключения. Примечание!
Один из этапов установки этой программы предлагает сервисы от Яндекс.
Ваше согласие установлено по умолчанию. Нужно снять галочки, чтобы избежать установки лишнего «мусора». Интерфейс выглядит следующим образом:

  • Встроенный планировщик заданий;
  • Календарь, в котором удобно отмечать важные даты;
  • Функция запуска любого файла в строго назначенное время;
  • Наличие будильника.
  • Меню сначала кажется частично не интуитивным.

Таймер – SmartPower (наиболее функциональный)

SmartPower – очень гибкое решение. В этой программе установка простого таймера на завершение работы – далеко не единственный способ отложенного выключения компьютера.

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

SmartPower 1.6.0

Программа может использовать информацию о нагрузке на процессор, количество принятого/отправленного трафика и т. д. Меню настроек программы изображено на рисунке ниже:
Рисунок 13. Окно с настройками программы «SmartPower».

  • Использование программой большого набора различных условий, что помогает наиболее точно настроить таймер;
  • Интуитивно понятный интерфейс;
  • Присутствие планировщика заданий.
  • Отсутствие русской локализации;
  • Отсутствие будильника и календаря.

Этот таймер очень понравится продвинутым пользователям, которые хорошо знают работу системы.

Гаджеты рабочего стола с функцией таймера на Windows 7

Окно с гаджетами Windows 7.

Гаджет (или мини-приложение) – это небольшая программа, которая отображает различную полезную информацию непосредственно на рабочем столе пользователя. Наиболее распространены на ОС Windows 7.
Гаджеты, в отличие от стороннего ПО, не требуют полноценной установки и периодических обновлений. С первым запуском эти мини-программы автоматически появляются в общем списке гаджетов системы.
Рисунок 14. Открываем меню с гаджетами на Windows 7.
Рассмотрим несколько примеров.

Гаджет Turn Off PC – большего и не нужно

Невероятно простое решение.
Достаточно только указать время в минутах и нажать на одну из трех кнопок (выключение, сон и выход из системы), и таймер будет запущен.

Гаджет Turn Off PC.

Приложение легко разместить в любом удобном месте на рабочем столе и использовать на постоянной основе. Рисунок 15. Минималистичный гаджет Turn Off PC.

Гаджет Turn Off PC прикреплен для скачивания в конце статьи.

Теперь рассмотрим более функциональную версию таймера на рабочий стол.

Читайте также: