2016-07-15 3 views
-1

저는 배치 파일을 사용하고 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 구문을 알지 못합니다.

+0

그래서 디버깅을 시작하십시오 : 오류의 원인을 찾을 때까지 줄을 주석 처리하십시오. –

+0

나는 그 동안 잠시 쫓아 다녔다. 지금까지 주석 처리 된 행이나 선의 조합에 관계없이 동일한 오류가 발생합니다. –

+0

그런 다음 모든 것을 주석으로 처리하고 주석 처리를 시작하십시오. 완전히 주석이 달린 버전으로 오류가 발생하면 오류의 원인이되는이 배치를 호출하는 것입니다. –

답변

1

어쩌면 당연하지 않을 수도 있습니다. 코드 블록 안에 ::을 사용하지 마십시오. 대신 REM을 사용하십시오.
(개인적으로 일관성을 위해 ::을 사용하지 마십시오.)
기술적으로 레이블이며 코드 블록에는 레이블을 사용할 수 없습니다.

+0

감사합니다. 앞으로도 그렇게 할 것입니다. –

관련 문제