2017-03-17 6 views
1

간단한 스크립트로 작업하고 있지만 실제로 문제가 있습니다. (며칠 전에 x.x 명령 프롬프트 및 배치 스크립트를 배우기 시작했습니다.)배치 스크립트 변경 시스템 날짜

실행될 때 시스템 연도를 2010 년으로 변경하고 다시 실행하면 올바른 연도로 되돌아 가야합니다. 연구 후에 나는이 함께했다 :

@echo off 

:: BatchGotAdmin 
:------------------------------------- 
REM --> Check for permissions 
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" 

REM --> If error flag set, we do not have admin. 
if '%errorlevel%' NEQ '0' (
    echo Requesting administrative privileges... 
    goto UACPrompt 
) else (goto gotAdmin) 

:UACPrompt 
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" 
    echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" 

    "%temp%\getadmin.vbs" 
    exit /B 

:gotAdmin 
    if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs") 
    pushd "%CD%" 
    CD /D "%~dp0" 
:-------------------------------------- 

SETX DAY "%Date:~0,2%" /M 
SETX MONTH "%Date:~3,2%" /M 
SETX YEAR "%DATE:~-4%" /M 


IF NOT "%year%"=="2010" (
    SETX CPS_YEAR "%year%" /M 
    date %day%-%month%-2010 
) ELSE (
    date %day%-%month%-%cps_year% 
) 

첫 번째 부분은 시스템 변수를 처리하기 위해 관리자 권한을 요구 내가 찾은 스크립트 (https://sites.google.com/site/eneerge/scripts/batchgotadmin)이고, 문제는 내 논리입니다.

일종의 작품이지만, 한 해를 한 번 변경 한 후에는 두 번 다시 변경해야합니다. 그리고 다시 두 번 다시 변경하십시오.

무엇이 원인 일 수 있습니까?

많은 감사!

+1

왜 'SETX'를 사용하고 있습니까? 'SETX '로 생성 한 변수는 스크립트 실행 중에는 사용할 수 없습니다. 도움말 파일의 주 2를 참조하십시오. SET 명령을 사용하여 변수를 작성하면됩니다. – Squashman

+0

스크립트 실행 후 계속 존재하는 변수를 저장하는 다른 방법이 있습니까? 변수에 현재 연도를 저장해야하기 때문에 시스템 날짜를 2010로 변경 한 다음 다시 실행하면 다시 변경해야합니다. (지연 응답에 대한 미안) 편집 : 당분간, 스크립트 내에서 코드를 2 번 붙인 ... 작동하지만 나 자신에 대해 나쁘다고 생각 하하하) – Cirelli

답변

0

코드를 검토하고 "최적화"한 다음 올바르게 작동합니다. 나는 현재 연도를 저장해야하기 때문에 SETX 변수를 사용해야하므로 스크립트를 다시 실행하면 해당 값에 액세스하여 연도를 원래 값으로 다시 변경할 수 있습니다.

IF NOT "%DATE:~-4%"=="2010" (
    SETX CPS_YEAR "%DATE:~-4%" /M 
    date %Date:~0,2%-%Date:~3,2%-2010 
) ELSE (
    date %Date:~0,2%-%Date:~3,2%-%CPS_YEAR% 
)