2016-07-15 8 views
-1

Ich bin sehr neu zu Batch-Dateien und Programmierung in cmd. Nachdem ich kein kostenloses Hintergrundprogramm gefunden hatte, das zu einem bestimmten Zeitpunkt einen bestimmten Hintergrund festlegen würde, und zwei Monitore unterstützte, entschloss ich mich, eine Stapeldatei zu erstellen, die die Uhrzeit (im militärischen Format) abruft und if-Anweisungen verwendet Hintergrundbild, wenn es noch nicht festgelegt wurde. Hier ist ein Abschnitt des Codes so weit:Wie Hintergrundbild zu bestimmten Zeiten mit einer Batch-Datei ändern?

@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 

diese Datei Lauf gibt den Fehler „Die Syntax des Befehls ist falsch“, so weiß ich wenigstens einen meiner Befehle nicht die richtige Syntax hat aber Ich kann nicht herausfinden, welches es ist. Der Großteil dieses Codes wurde aus verschiedenen Quellen über das Internet kopiert und eingefügt. Ich habe effektiv keine Kenntnis der korrekten Cmd-Syntax.

+0

Beginnen Sie also mit dem Debuggen: Beginnen Sie mit dem Auskommentieren von Zeilen, bis Sie den Fehler gefunden haben, der den Fehler verursacht hat. –

+0

Ich habe eine Weile davon weggetobt. Ich erhalte den gleichen Fehler, egal welche Zeile oder Kombination von Zeilen ich bisher auskommentiert habe. –

+0

dann kommentieren Sie ALLES aus und beginnen Sie mit der Auskommentierung. Wenn Sie den Fehler mit der vollständig kommentierten Version erhalten, dann rufen Sie diesen Stapel ab, der den Fehler verursacht. –

Antwort

1

vielleicht nicht so offensichtlich: Verwenden Sie keine :: innerhalb Codeblöcke. Verwenden Sie stattdessen REM.
(Ich persönlich :: aus Konsistenzgründen überhaupt nicht verwenden)
Es ist technisch ein Etikett und Etiketten sind nicht in Codeblöcke erlaubt.

+0

Danke, das werde ich in Zukunft tun. –

Verwandte Themen