从 Windows 命令行安排作业?

从 Windows 命令行安排作业?

在 Linux 上有计划任务工作和作业。有没有办法从 Windows 上的命令行安排作业?

任务计划程序我并不需要 GUI。我必须修改脚本,以便根据特定条件安排事件……因此必须有一种从命令行调用它的方法。

答案1

Windows 也有一个“at 作业”。尽管语法略有不同。

C:\Documents and Settings\Administrator>在 /?
AT 命令安排命令和程序在计算机上运行
指定的时间和日期。必须正在运行计划服务才能使用
AT 命令。

AT [\\计算机名称] [ [id] [/DELETE] | /DELETE [/YES]]
在 [\\computername] 时间 [/INTERACTIVE]
    [ /EVERY:日期[,...] | /NEXT:日期[,...]] “命令”

\\computername 指定远程计算机。命令在
                   如果省略此参数,则为本地计算机。
id 是分配给预定
                   命令。
/delete 取消已安排的命令。如果省略 id,则所有
                   计算机上的预定命令被取消。
/yes 与取消所有作业命令一起使用,当没有进一步
                   需要确认。
时间指定命令运行的时间。
/interactive 允许作业与用户的桌面交互
                   作业运行时谁登录。
/every:date[,...] 在每周指定的每几天运行命令或
                   月。如果省略日期,则为当月的当前日期
                   假设。
/next:date[,...] 在下一个出现时运行指定的命令
                   日(例如,下周四)。如果省略日期,则
                   假设为本月的当前日期。
“命令”是 Windows NT 命令或要运行的批处理程序。

例子:

at 9:00 /interactive notepad.exe

这将导致记事本在早上9点以交互方式为用户打开。

答案2

使用调度任务命令。它比at命令有更多选项,还有一些不错的选项,例如/mo LASTDAY月份最后一天:

调度任务安排命令和程序定期或在特定时间运行。在计划中添加和删除任务、按需启动和停止任务以及显示和更改计划任务。

句法:

schtasks /create /tn 任务名称 /tr 任务运行 /sc 计划 [/mo 修改器]
         [/d 天] [/m 月[,月...] [/i 空闲时间] [/st 开始时间]
         [/sd 开始日期] [/ed 结束日期] [/s 计算机 [/u
         [域\]用户/p 密码]]
         [/ru {[Domain\]用户 | "System"} [/rp 密码]] /?

答案3

编写一个 Windows shell 脚本来使用睡眠程序进行延迟:

@echo off

:loop
someprogram args
sleep 900
if somecondition goto loop

在它自己的 shell 窗口中运行它。使用此脚本配置 cmd.exe 在开机时运行。sleep休眠几秒钟:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <Windows.h>

int main(int argc, char* argv[])
{
    int n = atoi(argv[1]);

    Sleep(n * 1000);

    return 0;
}

相关内容