找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 985|回复: 37

[求助] 需要一个定时开启某个屏保和设置屏保时间的批处理或注册表

[复制链接]
发表于 2026-3-19 10:04:01 | 显示全部楼层 |阅读模式
如题,需要:

在每天8点至下午6点,将某个屏保(如“时钟”屏保)的启动时间设置为999;
在下午6点至第二天8点,将某个屏保(如“时钟”屏保)的启动时间设置为1


看看哪个高手能支持下,做成批处理,我放到计划任务里面去,谢谢
发表于 2026-3-19 10:14:57 | 显示全部楼层
问一下 AI 看看有没有
回复

使用道具 举报

发表于 2026-3-19 10:17:51 | 显示全部楼层
看上去是公家单位的。pc不建议不关机,笔记本可以不关机。不关机机器会越来越慢;不如设置个6点自动关机。

点评

不是公家电脑,是自己用PC做的文件服务器,设置了时钟屏幕。白天这台机器要干点活,晚上用时钟屏保当夜间时钟用。  详情 回复 发表于 2026-3-19 10:40
回复

使用道具 举报

发表于 2026-3-19 10:20:56 | 显示全部楼层
自己去看下,百度 AI 的有没有用:
https://chat.baidu.com/search?wo ... 9586174458379%22%7D
回复

使用道具 举报

发表于 2026-3-19 10:23:19 | 显示全部楼层
完整批处理脚本(.bat)
bat
Copy Code
@echo off
setlocal enabledelayedexpansion

:: 获取当前系统时间(HH:MM 格式)
for /f "tokens=1-2 delims=:" %%a in ('time /t') do (
    set hour=%%a
    set minute=%%b
)

:: 去除前导空格(time /t 输出可能含空格)
set hour=!hour: =!

:: 判断时间段:8:00 - 18:00 为白天,其余为夜间
if !hour! geq 08 (
    if !hour! lss 18 (
        set target=999
    ) else (
        set target=1
    )
) else (
    set target=1
)

:: 写入注册表
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut /t REG_SZ /d !target! /f >nul

:: 刷新屏保设置(立即生效)
rundll32.exe user32.dll,UpdatePerUserSystemParameters

:: 可选:输出当前设置
echo 屏保等待时间已设置为 !target! 秒

pause
⚙️ 使用方法
新建文件‌:打开记事本,粘贴上述代码
保存为 .bat‌:另存为 ScreenSaverSwitch.bat,编码选 ‌ANSI‌
运行脚本‌:双击执行,或通过任务计划程序设置为‌每小时自动运行‌
验证效果‌:
打开注册表编辑器(regedit)
导航至 HKEY_CURRENT_USER\Control Panel\Desktop
查看 ScreenSaveTimeOut 值是否随时间自动切换
🕒 自动化建议:使用任务计划程序
为实现‌全天候自动切换‌,请将脚本加入‌Windows任务计划程序‌:

表格
项目        设置
触发器‌        每天 08:00 和 18:00 各触发一次
操作‌        启动程序:C:\Path\To\ScreenSaverSwitch.bat
条件‌        勾选“只有在计算机使用交流电源时才启动”(可选)
设置‌        勾选“如果任务已运行,则排队”
✅ 此方式无需持续运行脚本,系统定时触发,稳定可靠。

📹 操作演示视频推荐
为帮助您直观掌握脚本运行与注册表修改流程,建议观看以下视频教程:

⚠️ 注意事项
屏保样式需预先设置‌:脚本仅控制‌等待时间‌,请确保已在“屏幕保护程序设置”中选中“时钟”屏保
生效延迟‌:部分系统需‌重新登录‌或‌重启资源管理器‌(taskkill /f /im explorer.exe & start explorer.exe)才能完全生效
兼容性‌:适用于 Windows 10 / 11,注册表路径一致
备份建议‌:运行前可导出注册表项:
bat
Copy Code
reg export "HKEY_CURRENT_USER\Control Panel\Desktop" "C:\ScreenSaverBackup.reg

点评

谢谢,我测试一下  详情 回复 发表于 2026-3-19 10:34
回复

使用道具 举报

 楼主| 发表于 2026-3-19 10:33:47 | 显示全部楼层
通过 手动修改  ScreenSaveTimeOut  好像无效

点评

有没刷新  详情 回复 发表于 2026-3-19 13:40
回复

使用道具 举报

 楼主| 发表于 2026-3-19 10:34:55 | 显示全部楼层
yyz2191958 发表于 2026-3-19 10:23
完整批处理脚本(.bat)
bat
Copy Code

谢谢,我测试一下
回复

使用道具 举报

 楼主| 发表于 2026-3-19 10:40:06 | 显示全部楼层
窄口牛 发表于 2026-3-19 10:17
看上去是公家单位的。pc不建议不关机,笔记本可以不关机。不关机机器会越来越慢;不如设置个6点自动关机。 ...

不是公家电脑,是自己用PC做的文件服务器,设置了时钟屏幕。白天这台机器要干点活,晚上用时钟屏保当夜间时钟用。

点评

晚上用时钟屏保当夜间时钟用——————耗电呀  详情 回复 发表于 2026-3-19 10:43
回复

使用道具 举报

发表于 2026-3-19 10:43:36 | 显示全部楼层
冰华 发表于 2026-3-19 10:40
不是公家电脑,是自己用PC做的文件服务器,设置了时钟屏幕。白天这台机器要干点活,晚上用时钟屏保当夜间 ...

晚上用时钟屏保当夜间时钟用——————耗电呀

点评

有屋顶光伏发电和储能系统,电,不存在问题  详情 回复 发表于 2026-3-19 10:45
回复

使用道具 举报

 楼主| 发表于 2026-3-19 10:45:47 | 显示全部楼层
yyz2191958 发表于 2026-3-19 10:43
晚上用时钟屏保当夜间时钟用——————耗电呀

有屋顶光伏发电和储能系统,电,不存在问题

点评

哇,强大啊  详情 回复 发表于 2026-3-19 10:47
回复

使用道具 举报

发表于 2026-3-19 10:47:23 | 显示全部楼层
冰华 发表于 2026-3-19 10:45
有屋顶光伏发电和储能系统,电,不存在问题

哇,强大啊
回复

使用道具 举报

发表于 2026-3-19 11:01:47 | 显示全部楼层
  1. echo off
  2. :: 获取当前时间(格式 HH:mm)
  3. for /f "tokens=1-4 delims=:. " %%a in ("%time%") do (
  4.     set /a hour=%%a
  5. )

  6. :: 判断当前时间是否在白天(8:00 - 18:00)
  7. if %hour% geq 8 if %hour% lss 18 (
  8.     goto set_day
  9. ) else (
  10.     goto set_night
  11. )

  12. :set_day
  13. :: 设置白天屏保参数(999分钟)
  14. reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut /t reg_sz /d 999 /f
  15. reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t reg_sz /d "%SystemRoot%\system32\ssclock.scr" /f
  16. echo 屏保已设置为白天模式(999分钟)。
  17. goto end

  18. :set_night
  19. :: 设置夜间屏保参数(1分钟)
  20. reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut /t reg_sz /d 1 /f
  21. reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t reg_sz /d "%SystemRoot%\system32\ssclock.scr" /f
  22. echo 屏保已设置为夜间模式(1分钟)。
  23. goto end

  24. :end
  25. rundll32.exe user32.dll, UpdatePerUserSystemParameters
  26. echo 设置完成,屏保参数已更新。
  27. timeout /t 3 >nul
复制代码



点评

謝謝分享,非常感謝您!  详情 回复 发表于 2026-3-19 12:51

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

发表于 2026-3-19 11:09:18 | 显示全部楼层
顶一下。。。。。
回复

使用道具 举报

 楼主| 发表于 2026-3-19 11:19:39 | 显示全部楼层
要修订下:
注册表里面的屏幕保护时间是按秒,也就是1分钟是 60,9999分钟是 599940
回复

使用道具 举报

发表于 2026-3-19 11:19:41 | 显示全部楼层
本帖最后由 门口 于 2026-3-19 12:25 编辑

实际用不着写一个批处理里,在批处理检查判断时间比较繁琐和容易出错,而且你都用计划任务了,直接写两个批处理分时段执行不是更简单?
如果再简化的话,还可以直接定时下午6点时候直接启动屏幕保护即可。

补充:屏幕保护程序可以直接加 /s 参数启动,无论是批处理还是开始菜单运行(可不加/s)或者在计划任务里都可以直接运行。
当然如果你还可能偶尔操作电脑的话,是需要调整屏幕保护的超时时间的,这部分也可以直接在计划任务里增添操作步骤。

评分

参与人数 1无忧币 +5 收起 理由
yyz2191958 + 5

查看全部评分

回复

使用道具 举报

发表于 2026-3-19 12:22:38 | 显示全部楼层
本帖最后由 窄口牛 于 2026-3-19 16:32 编辑

那样的话就是十六楼的就可以,甚至你还可以存为两个电源计划或者两个主题,可能主题不会修改屏保?但电源计划一定可以,直接按时修改电源计划就好。
回复

使用道具 举报

发表于 2026-3-19 12:51:46 | 显示全部楼层

謝謝分享,非常感謝您!
回复

使用道具 举报

发表于 2026-3-19 13:40:41 | 显示全部楼层
冰华 发表于 2026-3-19 10:33
通过 手动修改  ScreenSaveTimeOut  好像无效

有没刷新
回复

使用道具 举报

发表于 2026-3-19 14:32:58 | 显示全部楼层
来了解下
回复

使用道具 举报

发表于 2026-3-19 15:55:20 | 显示全部楼层
要修改屏保启动时间,有两个问题,
1,注册表直接修改时间无法立即生效,
2、批处理的系统配置更新命令 rundll32.exe user32.dll, UpdatePerUserSystemParameters 有系统bug,也就是有大概率执行无效,需多次执行。

根据楼主的要求,只是特定时间启用和禁用屏保,
可以使用下面的注册表键值来执行。不需要系统配置更新,即改即生效。
前提是预先要修改好使用的屏保和生效时间即可。

  1. Windows Registry Editor Version 5.00

  2. [HKEY_CURRENT_USER\Control Panel\Desktop]
  3. ; 1表示屏保启用,0表示屏保禁用
  4. "ScreenSaveActive"="1"
复制代码

点评

就是因为这2个问题,导致我来论坛求助的,一度以为是我系统问题,连装N次系统后,老老实实的来论坛求助。 禁用屏保是很简单,但有时候人会犯懒或者追求完美  详情 回复 发表于 2026-3-20 08:14
回复

使用道具 举报

发表于 2026-3-19 21:50:52 | 显示全部楼层
学习一下
回复

使用道具 举报

发表于 2026-3-19 22:38:46 | 显示全部楼层
计划任务自己不能完成这个功能吗?
回复

使用道具 举报

发表于 2026-3-20 00:46:16 | 显示全部楼层
我想看看怎么实现的
回复

使用道具 举报

 楼主| 发表于 2026-3-20 08:14:45 | 显示全部楼层
本帖最后由 冰华 于 2026-3-20 08:18 编辑
ppll2030 发表于 2026-3-19 15:55
要修改屏保启动时间,有两个问题,
1,注册表直接修改时间无法立即生效,
2、批处理的系统配置更新命令 run ...

就是因为这2个问题,导致我来论坛求助的,一度以为是我系统问题,连装N次系统后,老老实实的来论坛求助。
禁用屏保是很简单,但有时候人会犯懒或者追求完美


现在增加了循环十次去执行桌面刷新命令 来激活批处理更改,但有的时候还是会失效,感觉无解!!!


:end
set / a n- = 1
start RunDll32.exe USER32.DLL,UpdatePerUserSystemParameters
if“%n%”NEQ“0”goto end


点评

你把禁用和启用的注册文件分别放到两个时间段的计划任务里执行不就好了。  详情 回复 发表于 2026-3-20 09:01
回复

使用道具 举报

发表于 2026-3-20 09:01:57 | 显示全部楼层
冰华 发表于 2026-3-20 08:14
就是因为这2个问题,导致我来论坛求助的,一度以为是我系统问题,连装N次系统后,老老实实的来论坛求助。
...

你把禁用和启用的注册文件分别放到两个时间段的计划任务里执行不就好了。
回复

使用道具 举报

发表于 2026-3-21 00:27:04 | 显示全部楼层
感谢分享!
回复

使用道具 举报

发表于 2026-3-21 21:16:18 | 显示全部楼层
本帖最后由 redyear2026 于 2026-3-21 21:19 编辑

一。想要设置屏保时间后无须重启系统即可立即生效,须在批处脚本中通过 powershell 调用系统底层的 SystemParametersInfo 方法,示例代码如下,存为 test.bat 运行(运行本脚本后打开或刷新注册表对应键值即可验证效果)。
  1. <# ::
  2. @echo off & if %time:~,2% geq 8 if %time:~,2% lss 18 (set "t=59940") else (set "t=60")
  3. powershell -nop -c "iex(${%~f0}|out-string)" &exit/b
  4. #>
  5. Add-Type @"
  6. using System.Runtime.InteropServices;
  7. public class x {
  8.    [DllImport("user32.dll")]
  9.    public static extern bool SystemParametersInfo(int a, int b, int c, int d);
  10.    public static void xa () { SystemParametersInfo(17, 1, 0, 3); }
  11.    public static void xt (int seconds) { SystemParametersInfo(15, seconds, 0, 3); } }
  12. "@
  13. [x]::xa(); [x]::xt([int]$env:t); exit
复制代码
二。楼主定义白天 08:00-18:00(36000秒),而定义屏保时间=59940秒,即白天区段内不会触发屏保,若非此意,须修改代码第二行中的 59940 为真实值。


点评

谢谢,试试  详情 回复 发表于 2026-3-22 17:29
回复

使用道具 举报

 楼主| 发表于 2026-3-22 17:29:32 | 显示全部楼层
redyear2026 发表于 2026-3-21 21:16
一。想要设置屏保时间后无须重启系统即可立即生效,须在批处脚本中通过 powershell 调用系统底层的 SystemP ...

谢谢,试试
回复

使用道具 举报

发表于 2026-3-23 10:47:42 | 显示全部楼层
最终方案,可以实现吧
回复

使用道具 举报

发表于 2026-3-24 10:37:05 | 显示全部楼层
我也在等楼下回帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1|闽公网安备35020302032614号 )

GMT+8, 2026-5-20 03:48

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表