├── README.md └── runtask.go /README.md: -------------------------------------------------------------------------------- 1 | # tasks 2 | image 3 | -------------------------------------------------------------------------------- /runtask.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "flag" 5 | "fmt" 6 | "os" 7 | "time" 8 | 9 | "github.com/capnspacehook/taskmaster" 10 | ) 11 | 12 | //将string类型的用户输入转换为time类型 13 | func stringTotime(timemee string) (t time.Time) { 14 | timetemp := "2006-01-02 1a5:04:05" 15 | tm, err := time.ParseInLocation(timetemp, timemee, time.Local) 16 | if err != nil { 17 | panic(err) 18 | } 19 | return tm 20 | } 21 | 22 | //检查用户输入的时间并返回结果 23 | func checkTime(str string) (t time.Time) { 24 | if str != "" { 25 | t := stringTotime(str) 26 | return t 27 | } 28 | tm := time.Now().Add(time.Minute * +1) 29 | return tm 30 | } 31 | 32 | func runWinTask(path string, args string, enable bool, tm time.Time) { 33 | //创建初始化计划任务 34 | taskService, err := taskmaster.Connect() 35 | if err != nil { 36 | fmt.Println(err) 37 | } 38 | 39 | defer taskService.Disconnect() 40 | //定义新的计划任务 41 | newTaskDef := taskService.NewTaskDefinition() 42 | //添加执行程序的路径和参数 43 | newTaskDef.AddAction(taskmaster.ExecAction{ 44 | Path: path, 45 | Args: args, 46 | }) 47 | //定义计划任务程序的执行时间等 48 | newTaskDef.AddTrigger(taskmaster.DailyTrigger{ 49 | DayInterval: 1, 50 | TaskTrigger: taskmaster.TaskTrigger{ 51 | Enabled: enable, 52 | StartBoundary: tm, 53 | }, 54 | }) 55 | 56 | //创建计划任务 57 | resp, _, err := taskService.CreateTask("\\windows\\update", newTaskDef, true) 58 | if err != nil { 59 | panic(err) 60 | } 61 | fmt.Println(resp) 62 | 63 | } 64 | 65 | func main() { 66 | // 命令行启动 67 | taskPath := flag.String("path", "", "指定计划任务启动程序的路径(必选)") 68 | taskArgs := flag.String("args", "", "添加计划任务启动程序的参数(可选)") 69 | flagTaskTime := flag.String("time", "", "添加计划任务启动的时间(可选,格式:\"2006-01-02 15:04:05\"),默认当前时间一分钟后执行") 70 | taskEnable := flag.Bool("enable", true, "计划任务是否启用(可选),默认为true") 71 | flag.Parse() 72 | 73 | if *taskPath == "" { 74 | fmt.Println("请使用-h寻求帮助") 75 | os.Exit(1) 76 | } 77 | // 检查时间 78 | taskTime := checkTime(*flagTaskTime) 79 | 80 | runWinTask(*taskPath, *taskArgs, *taskEnable, taskTime) 81 | } 82 | --------------------------------------------------------------------------------