Как создать пакетный файл, который при нажатии на него запускает .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
Вам нужно будет изменить две вещи в пакетном файле, чтобы убедиться, что он соответствует вашим потребностям.
- Сначала вам нужно будет изменить
PATH_TO_FILE
строку 7 на путь к исполняемому файлу, который вы хотите запустить. - Во-вторых, вам может потребоваться изменить
Sun
строку 10. Возможно, ее придется заменить на первые 3 буквы дня, в который вы хотите запустить исполняемый файл (если вы не хотите запускать его в воскресенье).