Change windows desktop background for day and night, using batchfile

Having a bright, blue wallpaper for day use and a darker, reddish wallpaper for evening/night is useful stay in synch with the real time of day. So, i wanted my windows xp machine automatically switch to the day wallpaper from 7-20 and to night from 20-7 hours. The following batch script does this, without any add-on software. To use, copy-paste the file and store it to your scripts directory (e:\etc in my case).

Advantages:

  • No additional software (apart from the script) has to be installed
  • No additional load on the computer by a desktop switcher, except from the tasks that you define yourself

Notes:

  • You must convert your jpg wallpaper to bmp (changing the dimensions to exactly match your screen). You can't directly use a jpg file as a windows wallpaper (the settings dialog creates a bmp file behind your back!).
  • Configuration is by changing the set … variable at the top of the file
  • Test by calling the batchfile
  • To automate the wallpaper switch:
    • make a link in the windows autostart folder
    • add an hourly task to the task manager (or even cleaner, two tasks at the switch times (7:00 and 20:00)
REM :: chwpdn. batchange to CHange the WallPaper for Day and Night
REM :: v1.0 B.Brunner, 23.12.2010 (brb_trash at epr dot ch)
REM Prepare two bmp files to be used during day and night 
REM - jpgs dont work directly, convert to bmp of your screen resolution first!
REM - change start and end day hour to your needs
REM - store this batchfile in a place like e:\etc
REM - make a link to this batchfile in your autostart folder (set minimized in the link)
REM - using the task manager have the batchfile start every hour, to switch during the day
REM 
REM Configuration changes go here
set wpnight=e:\etc\wallpaper_night.bmp
set wpday=e:\etc\wallpaper_day.bmp
set daystarthour=7
set dayendhour=20
 
REM Set hours variable 
for /f "tokens=1-3 delims=:." %%a in ( "%time%") do set hours=%%a
 
REM Use day wallpaper, except from 00:00-08:00 and 20:00-23:59
set wallpaper=%wpday%
if %hours% LSS %daystarthour% goto setnight
if %hours% GTR %dayendhour% goto setnight
goto setit
 
:setnight
set wallpaper=%wpnight%
 
:setit
Echo Setting wallpaper to %wallpaper%
 
REG ADD "HKCU\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d %wallpaper% /f 
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

~~LINKBACK~~

Enter your comment. Wiki syntax is allowed:
If you can't read the letters on the image, download this .wav file to get them read to you.