6

Я знаю, что есть at и schtasks. Но я не мог понять, как использовать их, чтобы выполнить задачу быстро и один раз. Я читал о скорой команде, но в моей версии для Windows такой команды нет.

Я планирую включить эту команду в командный файл и из-за этого не могу жестко указать время начала.

5 ответов5

7

Работая над ответом Кейта, чтобы удовлетворить ваши потребности:

timeout /t X ; psexec -i -s Y

куда

  1. timeout заменяет сон в Windows 7.
  2. X - это секунды ожидания, определенные в /t , добавьте /nobreak если вы хотите запретить пользователю продолжать.
  3. psexec от Microsoft SysInternals позволяет вам запускать интерактивную (-i) в качестве локальной системы (-s), обратите внимание, что вам нужно запустить psexec один раз, чтобы впервые принять лицензионное соглашение, или добавить -accepteula .
  4. Y ваша команда.

runas не позволяет вам запускаться как локальная система, поэтому используйте PsTools для задач, связанных с процессами.
Запуск запланированной задачи или службы кажется мне слишком большим решением проблемы ...


Например, ответ Патрика можно просто переписать так:

timeout /t 120 ; psexec -i -s calc.exe
5

Команда schtasks может запустить определенную задачу немедленно.

Как использовать Schtasks.exe для планирования задач в Windows Server 2003

Schtasks /Run

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

Синтаксис:

schtasks /run /tn TaskName [/s computer [/u [domain\]user /p password]] /?

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

3

Это запускает calc.exe через 2 минуты. Изменить

set /A START_MIN=%%j + 2

линия для изменения временного интервала.

for /f "delims=:. tokens=1,2" %%i in ("%time%") do (
set /A START_HOUR=%%i
set /A START_MIN=%%j + 2
)

IF %START_MIN% GEQ 60 (
call :AdjustStartTime
)

IF %START_MIN% LSS 10 SET START_MIN=0%START_MIN%

SCHTASKS /Create /SC ONCE /TN "My Scheduled Task Name" /RU "" /TR "C:\Windows\System32\Calc.exe" /ST %START_HOUR%:%START_MIN%

:AdjustStartTime
SET /A START_HOUR=%START_HOUR% + 1
SET /A START_MIN=%START_MIN% - 60
GOTO:EOF
1

Если вы не хотите использовать at , быстрый способ это просто спать перед вашей основной программой.

sleep 10 ; mycommand

Или поместите это в сценарий.

0

Ответ Патрика С. отвечал моим потребностям.

Я хотел бы отметить, однако, что кавычки не должны быть там после /TR и по какой-то причине, казалось, сломали мой скрипт.

После удаления его сценарий работал отлично!

Мое использование было в правиле Outlook. Вызывается сценарий, и на диск записывается электронное письмо с плагином (messagesave). Это делается для публикации на веб-сайте с моего офисного ПК для веб-сайта, и мой исходный сценарий, который вызывает пакет, должен быть прерван до записи файла. Мне было трудно понять, как правильно отложить запланированное задание, даже после того, как я нажал на страницу TechNet «schtasks».

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