主题
Windows 计划任务
提示信息
说明: 有时我们临时要创建一个计划任务,写代码太不划算,使用Windows 自带「任务计划程序」可以应对一下。
Windows 自带「任务计划程序」本身不能直接“访问网址”,但可以用它启动浏览器打开网页,或者用 PowerShell/curl 静默请求 URL(适合调接口/心跳/自动签到)。下面分两种场景给你可直接抄的配置。
1. 打开任务计划程序
Win + R → 输入 taskschd.msc 回车
右侧 → 「创建基本任务」(简单定时)或「创建任务」(高级,推荐用这个)2.场景 A:定时用浏览器弹出网页(看得见)
创建任务 → 触发器设好时间 → 操作里这样填:
程序或脚本:chrome.exe(或 msedge.exe / iexplore.exe)
添加参数:https://example.com
起始于:留空或填浏览器安装目录
如果 chrome.exe 提示找不到,就用完整路径,例如
C:\Program Files\Google\Chrome\Application\chrome.exe命令行一键版(每天 9:00 打开网页):
bat
SchTasks /Create /SC DAILY /TN "OpenSite" /TR "C:\Windows\explorer.exe https://example.com" /ST 09:00用 explorer.exe 会调用系统默认浏览器,路径最短。
3. 场景 B:后台静默访问 URL(不弹窗,调接口/定时触发)
方案 1:PowerShell(Win10/11 自带)
程序或脚本:powershell.exe
添加参数:
powershell
-ExecutionPolicy Bypass -Command Invoke-WebRequest 'https://example.com/api/cron' -UseBasicParsing如果要存返回内容,加 -OutFile C:\log.txt。
方案 2:curl(Win10+ 内置)
程序或脚本:curl
添加参数:https://example.com/api/cron
或写个 call.url.bat:
bat
@echo off
curl -X GET "https://example.com/api/cron"任务里启动这个 bat 就行。
命令行建任务(每天 2:00 静默请求):
bat
schtasks /create /tn "DailyApiCall" /tr "powershell -ExecutionPolicy Bypass -Command Invoke-WebRequest 'https://example.com/api/cron' -UseBasicParsing" /sc DAILY /st 02:004. 容易踩的坑
无桌面环境:选“不管用户是否登录都要运行”时,浏览器弹窗模式看不到界面,这种场景必须用 PowerShell/curl 静默方案。
权限:调接口建议勾「以最高权限运行」;内网服务可用 /ru SYSTEM。
拦截:首次运行可能被杀软/电脑管家拦,放行一次即可。
URL 带参数:& 在 bat 里要引号包住整个 URL,PowerShell 里用单引号最稳。
5.在C#程序中调用系统计划任务
C# 里“计划任务”其实分两条路:接管 Windows 任务计划程序(Schtasks COM) 和 在 .NET 进程内自己跑调度引擎。
下面我们只谈论对接 Windows 自带任务计划程序(Schtasks)
适合:希望任务由系统级 Scheduler 托管、开机即生效、不依赖你程序常驻。
TaskScheduler Managed Wrapper(NuGet: TaskScheduler,dahall 维护,支持 .NET Framework / .NET Core / .NET 6~9)
C# 里操作 Windows 任务计划最成熟的封装,等价于你前面手动在 taskschd.msc 里点的所有东西(触发器、操作、条件、设置全暴露)。
最小示例:
c#
using Microsoft.Win32.TaskScheduler;
using var ts = new TaskService();
var td = ts.NewTask();
td.Triggers.Add(new DailyTrigger { DaysInterval = 1, StartBoundary = DateTime.Today.AddHours(9) });
td.Actions.Add(new ExecAction("powershell.exe",
"-Command Invoke-WebRequest 'https://example.com' -UseBasicParsing", null));
ts.RootFolder.RegisterTaskDefinition("DailyPing", td);提示
优点:和系统任务计划完全一致、权限/登录态好控;
缺点:只限 Windows,复杂调度逻辑写起来啰嗦;


