Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何使用批处理文件在特定时间更改墙纸?_Windows_Batch File_Time_Cmd_Wallpaper - Fatal编程技术网

Windows 如何使用批处理文件在特定时间更改墙纸?

Windows 如何使用批处理文件在特定时间更改墙纸?,windows,batch-file,time,cmd,wallpaper,Windows,Batch File,Time,Cmd,Wallpaper,我对在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% l

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

可能不那么明显:不要在代码块内使用
。改用
REM

(出于一致性原因,我个人根本不使用


从技术上讲,这是一个标签,代码块中不允许使用标签。

因此,开始调试:开始注释行,直到找到导致错误的行。我已经为此绞尽脑汁了一段时间。无论到目前为止我注释掉了哪一行或哪几行的组合,我都会收到相同的错误。然后注释掉所有内容,并开始取消注释。如果您在完全注释的版本中出现错误,则是您调用此批处理的方式导致了错误。我不认为在选择此文件时按enter键会导致错误。我是带着一个语法问题来到这里的,所以我可以学习更多关于MS-DOS语法的知识。我已经知道如何迭代调试代码。我已经知道如何迭代调试代码。然后这样做以隔离导致错误的行,您可以询问有关该行语法的特定问题。别指望我们为你做这件事。谢谢你,我以后一定会做的。