Windows批处理脚本切换桌面背景

标签 windows scripting batch-file

有没有办法检查用户当前的背景是什么,然后根据背景进行更改?例如:我想要白天的白色背景和夜间的黑色背景。运行脚本会检查当前背景,如果是白色则切换到黑色背景,如果是黑色则切换到白色。

我对 Windows 批处理脚本有点陌生,我正在寻求一些关于如何完成上述任务的提示和建议。到目前为止,这是我能够找到的内容:

@echo off
call :quiet>nul 2>&1
goto :EOF

:quiet


:: Configure Wallpaper 
REG ADD "HKCU\Control Panel\Desktop" /V Wallpaper /T REG_SZ /F /D "%SystemRoot%\energybliss.bmp"
REG ADD "HKCU\Control Panel\Desktop" /V WallpaperStyle /T REG_SZ /F /D 0
REG ADD "HKCU\Control Panel\Desktop" /V TileWallpaper /T REG_SZ /F /D 2


:: Configure the screen saver.
:: REG ADD "HKCU\Control Panel\Desktop" /V SCRNSAVE.EXE /T REG_SZ /F /D "%SystemRoot%\System32\scrnsave.scr"
:: REG ADD "HKCU\Control Panel\Desktop" /V ScreenSaveActive /T REG_SZ /F /D 1


:: Set the time out to 900 seconds (15 minutes).
:: REG ADD "HKCU\Control Panel\Desktop" /V ScreenSaveTimeOut /T REG_SZ /F /D 900


:: Set the On resume, password protect box 
:: REG ADD "HKCU\Control Panel\Desktop" /V ScreenSaverIsSecure /T REG_SZ /F /D 1


:: Remove the user's ability to see the Screen Saver, background, and appearance tabs of Display Properties. 
::REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /V NoDispScrSavPage /T REG_DWORD /F /D 1
::REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /V NoDispBackgroundPage /T REG_DWORD /F /D 1
::REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\System" /V NoDispAppearancePage /T REG_DWORD /F /D 1

:: Make the changes effective immediately
%SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters

最佳答案

您可以使用这样的代码:

@echo off

:: '>nul 2>&1' was moved to other place
call :quiet
exit /b

:quiet
    :: Put there wallpaper name (with extension, bigger that 8 symbols)
    set "Wallpaper.Night.BadWrited=Wallpaper1.bmp"

    :: It is a dirty hack and example of bad code
    for /F "tokens=*" %%a in ('reg query "HKCU\Control Panel\Desktop" /v Wallpaper') do     set "Wallpaper.Current.BadWrited=%%a"

    :: Take last 8 symbols of wallpaper name. Change number of symbols to your own  minimal
    set "Wallpaper.Current.BadWrited=%Wallpaper.Current.BadWrited:~-8%"
    set "Wallpaper.Night.BadWrited=%Wallpaper.Night.BadWrited:~-8%"

    if "%Wallpaper.Current.BadWrited%"=="%Wallpaper.Night.BadWrited%" (
        call :MakeDayWallpaper>nul 2>&1
    ) else (
        call :MakeNightWallpaper>nul 2>&1
    )
exit /b

:MakeDayWallpaper
    echo Day wallpaper setted
    :: Put your code here
exit /b

:MakeNightWallpaper
    echo Night wallpaper setted 
    :: Put your code here
exit /b

但我建议使用系统调度程序。您可以从控制面板、“计划任务”或其他内容访问它。您可以制作两个名为“makeday.bat”和“makenight.bat”的文件。调度程序将在每天需要的时间运行它们

关于Windows批处理脚本切换桌面背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041703/

相关文章:

windows - 如何配置 Compass 以在 Windows 上生成具有 Unix 行结尾的文件?

testing - 如何在不使用任何自动化工具的情况下自动化 ETL 测试?

batch-file - 比较Win 7中的目录时发生意外错误

powershell - 如何在批处理文件 FOR 命令中使用 PowerShell?

Java游戏引擎,编写自己的脚本语言?

java - 如何创建批处理文件来运行系统任何位置的 jar 文件

c++ - 更改可警告/可等待线程的上下文

php - 在 Windows 命令行上运行 PHP 脚本时,PDO ODBC 连接出现 "Could not find driver"错误

c# - 无法递归删除用户文件夹中的文件夹。 'System.UnauthorizedAccessException' 出现在 mscorlib.dll 中

javascript - InDesign 脚本 - 表格页脚和插入点