【问题标题】:How to change wallpaper at specific times using a batch file?如何使用批处理文件在特定时间更改壁纸?
【发布时间】:2016-07-15 17:07:10
【问题描述】:

我对在 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 语法。

【问题讨论】:

  • 所以开始调试:开始注释行,直到找到导致错误的行。
  • 我一直在努力解决这个问题。到目前为止,无论我注释掉哪一行或几行组合,我都会收到相同的错误。
  • 然后注释掉所有内容,然后开始取消注释。如果您收到完全注释版本的错误,那么这就是您调用此批次的方式导致错误。
  • 我不认为在选择此文件时按回车键会导致错误。我带着一个语法问题来到这里,所以我可以了解更多关于 MS-DOS 语法的知识。我已经知道如何迭代调试代码了。
  • 我已经知道如何迭代地 [sp] 调试代码。然后这样做以隔离导致错误的行,您可以询问有关该行中的语法的特定问题。不要指望我们为你做这件事。

标签: windows batch-file time cmd wallpaper


【解决方案1】:

也许不是那么明显:不要在代码块中使用::。请改用REM
(出于一致性原因,我个人根本不使用 ::
从技术上讲,这是一个标签,代码块中不允许使用标签。

【讨论】:

  • 谢谢,我以后一定会这样做的。
猜你喜欢
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多