Пакетный файл, который запускается в особый день

Пакетный файл, который запускается в особый день

Как создать пакетный файл, который при нажатии на него запускает .exe-файл, если сегодня воскресенье?

Я не хочу, чтобы он запускал .exe файл, если это другой день. Если, например, это пятница, я просто хочу, чтобы он сам закрылся и ничего не делал.

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

решение1

Task SchedulerДля этой цели можно использовать . Открыть Task Scheduler > Create Task Теперь в открывшемся диалоговом окне можно определить свойства, условия запуска задачи и какое задание/приложение следует запустить.

Диспетчер задач

решение2

Дело в том, что вы хотите использовать расширенную функцию dateкоманды (День недели), которой Windows не может управлять в DOS Batch.

Для этого я бы использовал сторонний двоичный файл date.exe, который поставляется из мира Unix и работает в Windows:UnxUtils(это набор распространенных утилит GNU Unix, работающих в Windows).

Загрузите его сздесь(UnxUtils.zip).

Затем извлеките его и удалите все файлы, кромеdate.exe

Затем напишите пакетный файл, подобный этому (предполагается, date.exeчто он находится на c:\):

@ECHO OFF
REM Sunday is 0
for /f "delims=" %%a in ('c:\date.exe +%%w') do set DayOfWeek=%%a
if %DayOfWeek% == 0 (
  cmd /c c:\path\to\exe\file.exe
) else (
  echo Do Nothing
)

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


Также(намного лучше), в те дни DOS Batch немного устарели. Поскольку вы говорите о Windows 8, я бы рассмотрел Powershell (можно вызвать из пакетного файла, если нужно):

$a = Get-Date
if($a.DayOfWeek -eq "Sunday") {
    cmd /c c:\path\to\exe\file.exe
}

Здесь нет необходимости в сторонних двоичных файлах: Powershell — мощный инструмент ;)

решение3

В соответствии сЗДЕСЬневозможно выполнить пакетный файл с помощью встроенной командной строки и не отобразить окно.

Итак, в конце концов, я остановился наЭТОТстраницу и использовал информацию для создания пакетного файла, который будет делать то, что вам нужно. Пакетный скрипт будет проверять время. Если это не правильный день, командная строка замигает красным и завершит работу. Если это правильный день, она замигает зеленым и запустит вашу программу, при этом завершив работу.

Все описанное в предыдущем абзаце происходит менее чем за секунду (в зависимости от скорости вашего компьютера), поэтому не будет особо заметным.

@echo off

mode con: cols=16 lines=6

:: The file you want to launch.
set FILE=PATH_TO_FILE

:: The day you want to launch the file on.
set DAY=Sun

for /F "tokens=1 delims= " %%A in ('Date /t') do ( Set TODAY=%%A )
if %TODAY% == %DAY% goto START

:STOP
color 47
goto END

:START
color 27

start "" "%FILE%"
goto END

:END
exit

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

  1. Сначала вам нужно будет изменить PATH_TO_FILEстроку 7 на путь к исполняемому файлу, который вы хотите запустить.
  2. Во-вторых, вам может потребоваться изменить Sunстроку 10. Возможно, ее придется заменить на первые 3 буквы дня, в который вы хотите запустить исполняемый файл (если вы не хотите запускать его в воскресенье).

Связанный контент