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

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

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

3 ответа3

4

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

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

1

Дело в том, что вы хотите использовать расширенную функцию date (Day Of Week), которой 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 - Powerfull;)

0

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

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

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

@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 буквы дня, когда вы хотите запустить исполняемый файл (если вы не хотите запускать его в воскресенье).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .