计划任务与自动化
schtasks(计划任务,CMD/PowerShell 通用)
schtasks /create /tn "TaskName" /sc daily /st 09:00 /tr "cmd /c script.bat" :: 每天 9 点
schtasks /create /tn "backup" /sc weekly /d SUN /st 02:00 /tr "D:\backup.bat"
schtasks /create /tn "check" /sc minute /mo 10 /tr "D:\check.bat" :: 每 10 分钟
schtasks /run /tn "backup" :: 立即运行
schtasks /query /tn "backup" :: 查询任务详情
schtasks /query /fo list /v | findstr "TaskName:\|Next" :: 列出全部任务与下次运行时间
schtasks /change /tn "backup" /st 03:00 /tr "new.bat" :: 修改时间/动作
schtasks /delete /tn "backup" /f :: 删除任务
schtasks /end /tn "backup" :: 停止当前运行
schtasks /create /tn "admin" /sc onlogon /tr "notepad.exe" /rl highest :: 开机登录时以管理员运行
常用触发器 /sc:ONCE 一次、DAILY、WEEKLY、MONTHLY、ONLOGON 登录时、ONSTART 开机时、MINUTE/HOURLY 间隔。
PowerShell 创建计划任务(等价做法)
$action = New-ScheduledTaskAction -Execute "D:\backup.bat"
$trigger = New-ScheduledTaskTrigger -Daily -At 3am
Register-ScheduledTask -TaskName "backup" -Action $action -Trigger $trigger -Force
# 查看 / 删除
Get-ScheduledTask -TaskName "backup"
Unregister-ScheduledTask -TaskName "backup"
开机启动项
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup :: 当前用户启动文件夹
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup :: 所有用户
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
reg query "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v MyApp /t REG_SZ /d "C:\app.exe"
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v MyApp /f
推荐用任务管理器「启动」页管理(taskmgr → 启动)。
PowerShell 定时 / 延时
Start-Sleep -Seconds 30 # 等待 30 秒
Register-ObjectEvent / Register-ScheduledJob # 复杂场景见文档
# 定时循环(每 5 分钟执行,后台运行示例)
while ($true) { Send-Backup; Start-Sleep -Seconds 300 }
事件循环 / 文件监控自动任务
$watcher = New-Object System.IO.FileSystemWatcher -Property @{Path="D:\inbox"; Filter="*.csv"}
Register-ObjectEvent $watcher "Created" -Action {
Write-Host "新文件: $($Event.SourceEventArgs.FullPath)"
# 在这里执行处理逻辑
}
# 用完后 Unregister-Event
自动化脚本常用技巧(CMD)
:: 判断管理员权限
net session >nul 2>&1
if errorlevel 1 (echo 请以管理员身份运行 & pause & exit /b 1)
:: 日志输出带时间戳
echo %date% %time% Starting backup >> D:\logs\backup.log
:: 失败则退出并记录
your_command.exe
if errorlevel 1 (echo FAIL at %time% >> D:\logs\error.log & exit /b 1)
PowerShell 脚本头加:
$ErrorActionPreference = "Stop" # 出错即停
Start-Transcript -Path D:\logs\run.log # 记录全部输出
Start-Process powershell -Verb RunAs # 自动提权(管理员)
常见自动化场景
| 场景 | 方案 |
|---|---|
| 每天备份文件 | schtasks 每天 + robocopy 脚本 |
| 启动时开服务/软件 | 启动文件夹或计划任务 ONLOGON |
| 定期清理日志 | 计划任务 + PowerShell 脚本 |
| 监控文件夹新文件入库 | FileSystemWatcher 事件 |
| 定时重启服务 | 计划任务 + Restart-Service |
注意:计划任务默认在当前用户的凭据下运行,涉及网络盘/管理员操作需配置「使用最高权限」(highest) 并测试与登录交互相关的设置。