2017-03-17 5 views
1

Ich arbeite an einem kleinen Skript, das sollte einfach sein, aber ist wirklich problematisch. (Ich begann vor ein paar Tagen, Eingabeaufforderung und Batch-Skripte x.x zu lernen).Batch-Skript ändern Systemdatum

Ich brauche es, wenn ausgeführt, Systemjahr zu 2010 ändern, und wenn ausgeführt, wieder zum richtigen Jahr zurückzukehren. Nach einer Forschung, die ich mit diesem kam:

@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% 
) 

Der erste Teil ist ein Skript, das ich gefunden (https://sites.google.com/site/eneerge/scripts/batchgotadmin), die Administratorrechte behandeln Systemvariablen fragt, ist das Problem in meiner Logik.

Es funktioniert, aber nachdem das Jahr einmal geändert wurde, muss es zweimal ausgeführt werden, um zurück zu ändern. Und noch zweimal um es wieder zu ändern.

Irgendwelche Hinweise darauf, was das verursachen könnte?

Vielen Dank!

+1

Warum verwenden Sie 'SETX'? Die Variablen, die Sie mit 'SETX' erstellen, sind zur Laufzeit des Skripts nicht verfügbar. Siehe ANMERKUNG 2 der Hilfedatei. Verwenden Sie einfach den Befehl SET, um Ihre Variablen zu erstellen. – Squashman

+0

gibt es eine andere Möglichkeit, eine Variable zu speichern, die nach der Laufzeit des Skripts weiter besteht? Weil ich es brauche, um das aktuelle Jahr auf einer Variablen zu speichern, ändere das Systemdatum auf 2010, und wenn es erneut ausgeführt wird, ändere es zurück. (Entschuldigung für verzögerte Antwort) edit: vorläufig habe ich den Code 2 mal in das Skript eingefügt ... Es funktioniert, aber ich fühle mich schlecht über mich hahaha) – Cirelli

Antwort

0

Nachdem Sie den Code durchdacht und "optimiert" haben, funktioniert er nun ordnungsgemäß. Ich muss SETX-Variablen verwenden, weil ich das aktuelle Jahr darauf speichern muss. Wenn ich das Skript erneut ausführe, kann ich auf diesen Wert zugreifen und das Jahr auf den ursprünglichen Wert zurücksetzen.

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% 
) 
Verwandte Themen