PowerShell定时检查日期执行Python脚本
PowerShell语句每半小时检查一次当前的日期,如果当前的日期是开始运行时日期的第2天,则自动运行一段Python语句。
# 记录脚本开始运行的日期(仅日期部分)
$startDate = (Get-Date).Date# 计算目标日期(开始日期的第二天)
$targetDate = $startDate.AddDays(1)# 每半小时检查一次日期
while ($true) {# 获取当前日期(仅日期部分)$currentDate = (Get-Date).Date# 检查是否达到目标日期if ($currentDate -eq $targetDate) {# 执行Python代码(替换为你的实际Python命令)python -c "print('Hello from Python! Today is ' + str(__import__('datetime').datetime.now()))"# 可选:执行后退出循环break}# 如果当前已超过目标日期,则退出循环(避免无限循环)elseif ($currentDate -gt $targetDate) {Write-Host "Target date has passed. Exiting."break}# 等待30分钟(1800秒)Start-Sleep -Seconds 1800
}
使用说明:
-
替换Python代码:将示例中的Python命令
python -c "print(...)"
替换为你需要执行的实际Python命令- 运行脚本文件:
python C:\path\to\your_script.py
- 执行单行命令:
python -c "your_code_here"
- 运行脚本文件:
-
运行方式:
- 保存为
.ps1
文件(如CheckDate.ps1
) - 在PowerShell中执行:
Set-ExecutionPolicy RemoteSigned -Scope Process # 临时允许脚本执行 .\CheckDate.ps1
- 保存为
-
后台运行(可选):
使用任务计划程序创建计划任务,设置:- 触发器:登录时或系统启动时
- 操作:启动PowerShell进程
- 参数:
-WindowStyle Hidden -File "C:\path\to\CheckDate.ps1"
关键逻辑说明:
$startDate
记录脚本首次运行的日期(去除时间部分)$targetDate
是开始日期的下一天- 每30分钟检查一次当前日期
- 当检测到当前日期等于目标日期时:
- 执行指定的Python命令
- 执行后自动退出(通过
break
语句)
- 如果当前日期已超过目标日期(如脚本未及时触发),自动退出
注意:脚本会持续运行直到日期条件满足。如需长期后台运行,建议结合Windows任务计划程序实现开机启动。