Как изменить обои в определенное время, используя командный файл?

Я очень новичок в использовании командных файлов и программирования в cmd. После того, как мне не удалось найти бесплатную программу обоев, которая бы устанавливала определенные обои в определенное время, и поддерживала двойные мониторы, я решил создать пакетный файл, который тянет время дня (в военном формате) и использует операторы if, чтобы установить соответствующие обои, если они еще не были установлены. Вот часть кода на данный момент:

@echo off

set /A mystate=0

:start

For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)

if %mytime% lss 800 (
    if NOT %mystate% == 1 (

        reg add "HKCU\Control Panel\Desktop" /v Wallpaper /f /t REG_SZ /d C:\Users\zach.norstedt\Pictures\Wallpaper\ASunrise.jpg

        :: Change last number to 0 to not tile, set it to 1 to tile.

        reg add "HKCU\Control Panel\Desktop" /v TileWallpaper /t REG_SZ /f /d 1

        :: The following lines energize desktop.

        %SystemRoot%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters

        set /A mystate=1
    )
)

sleep 1

goto start

Запуск этого файла выдает ошибку "Синтаксис команды неверен", поэтому я знаю, что по крайней мере одна из моих команд не имеет правильного синтаксиса, но я не могу понять, какая это. Большая часть этого кода была скопирована и вставлена ​​из разных источников в Интернете. У меня практически нет знаний о правильном синтаксисе cmd.

1 ответ

Может быть, не так очевидно: не используйте :: внутри блоков кода. использование REM вместо.
(Лично я не пользуюсь :: вообще по причинам консистенции)
Технически это метка, а метки не допускаются в блоках кода.

Другие вопросы по тегам