批处理脚本更改系统日期
batch script change system date
我正在编写一个应该很简单但确实有问题的小脚本。 (我几天前开始学习命令提示符和批处理脚本x.x)。
我需要它在执行时将系统年份更改为 2010,并在再次执行时 return 更正年份。
经过研究,我想出了这个:
@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),它要求管理员权限来处理系统变量,问题在我的逻辑中。
有点效果,但是改一次年份后,需要执行两次才能改回来。并再次改变两次。
任何可能导致此问题的线索?
非常感谢!
仔细考虑并 "optimizing" 代码后,它现在可以正常工作了。
我必须使用 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%
)
我正在编写一个应该很简单但确实有问题的小脚本。 (我几天前开始学习命令提示符和批处理脚本x.x)。
我需要它在执行时将系统年份更改为 2010,并在再次执行时 return 更正年份。 经过研究,我想出了这个:
@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),它要求管理员权限来处理系统变量,问题在我的逻辑中。
有点效果,但是改一次年份后,需要执行两次才能改回来。并再次改变两次。
任何可能导致此问题的线索?
非常感谢!
仔细考虑并 "optimizing" 代码后,它现在可以正常工作了。 我必须使用 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%
)