Windows修改日期批处理

::用法:name.cmd 20170530 (其中name.cmd为以下命令保存的脚本名)

::获取管理员权限

%Windir%\System32\FLTMC.exe >nul 2>&1 || (
    IF EXIST "%TEMP%\AdminRun.vbs" DEL /f /q "%TEMP%\AdminRun.vbs" 2>nul
    ECHO CreateObject^("Shell.Application"^).ShellExecute "%~f0", "%1", "", "runas", 1 >> "%TEMP%\AdminRun.vbs"
    ECHO CreateObject^("Scripting.filesystemobject"^).DeleteFile ^(WScript.ScriptFullName^) >> "%TEMP%\AdminRun.vbs"
    %Windir%\System32\CSCRIPT.exe //Nologo "%TEMP%\AdminRun.vbs"
    Exit /b
)

::获取输入日期

set DTE=%1
echo %DTE%

set YY=%DTE:~0,4%
set MM=%DTE:~4,2%
set DD=%DTE:~6,2%

::获取系统日期格式

for /f "delims=" %%a in ('reg query "HKEY_CURRENT_USER\Control Panel\International" /v sShortDate') do (
    set "RegDate=%%a"
)
set DT=%RegDate:~28,10%

for /f "delims=d,M,y" %%i in ("%DT%") do (
    set "str=%%i"  
)
for /f "tokens=1,2 delims=%str%" %%i in ("%DT%") do (
    set "RegDate1=%%i"  
    set "RegDate2=%%j"
)
for /f "tokens=1,3 delims=%str%" %%m in ("%DT%") do (
    set "RegDate3=%%n"
)

::赋值

:Step1
if %RegDate1:~0,1%==y set RegDate1=%YY%
if %RegDate1:~0,1%==M set RegDate1=%MM%
if %RegDate1:~0,1%==d set RegDate1=%DD%

:Step2
if %RegDate2:~0,1%==y set RegDate2=%YY%
if %RegDate2:~0,1%==M set RegDate2=%MM%
if %RegDate2:~0,1%==d set RegDate2=%DD%

:Step3
if %RegDate3:~0,1%==y set RegDate3=%YY%
if %RegDate3:~0,1%==M set RegDate3=%MM%
if %RegDate3:~0,1%==d set RegDate3=%DD%

::修改日期

:Step4
date %RegDate1%%str%%RegDate2%%str%%RegDate3%

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows 批处理中,如果使用 `%TIME%` 环境变量获取时间时出现乱码,可能是由于字符编码不匹配导致的。你可以尝试以下方法来解决乱码问题: 1. 使用 `chcp` 命令设置字符编码:在批处理脚本的开头添加以下命令,将字符编码设置为合适的编码(如 UTF-8): ```batch @echo off chcp 65001 > nul ``` 上述命令中的 `chcp 65001` 将字符编码设置为 UTF-8,`> nul` 用于隐藏命令的输出。 2. 修改命令行窗口的默认编码:右击命令行窗口的标题栏,选择“属性”,然后在“选项”选项卡中将“显示选项”中的“字体”更改为支持所需字符集的字体(如 Consolas)。重新打开命令行窗口并运行脚本,看看是否解决了乱码问题。 3. 使用其他方式获取时间:如果以上方法无效,你可以尝试使用其他方式获取时间,例如使用 `wmic` 命令: ```batch @echo off for /f "skip=1 delims=" %%a in ('wmic OS get LocalDateTime') do ( set "datetime=%%a" goto :next ) :next set "time=!datetime:~8,2!:!datetime:~10,2!:!datetime:~12,2!" echo 当前时间:%time% ``` 上述示例使用 `wmic` 命令获取本地日期时间,并将其存储在 `datetime` 变量中。然后使用字符串切片操作提取时间部分,并将其输出到屏幕上。 如果以上方法仍然无法解决乱码问题,请确保你的操作系统、命令行窗口和文本编辑器的字符编码设置一致,并支持所需的字符集。 希望这些方法能帮助你解决乱码问题!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值