【发布时间】: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