【问题标题】:How to change variable in commnd prompt numerically如何以数字方式更改命令提示符中的变量
【发布时间】:2013-09-13 05:42:38
【问题描述】:

我已使用此代码从 %date% 开始使用系统日期 设置 d=20%date:~6,2%%date:~0,2% 它的输出是 201309 我怎样才能在 30 天前得到相同的日期(所以我想要 201308)?比如有没有像日期的加法/减法这样的操作?我试过了 设置 /a "date2=%date%-30" 但它给出了错误:“无效的数字。数字常量是十进制(17), 十六进制 (0x11) 或八进制 (021)。”因为 cmd 假定一个值如果以 0 开头则为十六进制。

【问题讨论】:

标签: date cmd variable-assignment


【解决方案1】:

使用这个批处理文件你应该得到你需要的东西:

例程可以做一些额外的日期数学 - 批处理文件在前 9 行之后,可以独立。

@echo off
call datebatch today -30
set "var=%day:0,6%"
echo "%var%"
pause
goto :eof
:datebatch
:: Date foward & backward
@echo off
if "%~2"=="" (
echo to get todays date use         call "%~n0" today 0
echo to get yesterdays date use     call "%~n0" today -1
echo to get 25 days before 19441213 call "%~n0" 1944/12/13 -25
echo to get 1250 days in the future call "%~n0" today 1250
echo.
echo Add a third parameter if you want a separator in the date string
echo EG: for this format YYYY-MM-DD using today's date
echo     call "%~n0" today 0 -
echo.
pause
goto :EOF)

set date1=%1
set qty=%2
set separator=%~3
if /i "%date1%" EQU "TODAY" (set date1=now) else (set date1="%date1%")
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%qty%,%date1%)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^&_
echo>>"%temp%\%~n0.vbs"         right(100+month(s),2)^&_
echo>>"%temp%\%~n0.vbs"         right(100+day(s),2)
for /f %%a in ('cscript //nologo "%temp%\%~n0.vbs"') do set result=%%a
del "%temp%\%~n0.vbs"
endlocal& set "YY=%result:~0,4%"&set "MM=%result:~4,2%"&set "DD=%result:~6,2%"
set "day=%YY%%separator%%MM%%separator%%DD%"
echo %%day%% is set to "%day%" (without the quotes)
echo %%YY%% is set to %YY%
echo %%MM%% is set to %MM%
echo %%DD%% is set to %DD%

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-15
    • 2014-09-09
    • 2022-01-25
    • 2010-09-07
    • 2012-06-16
    • 2018-03-04
    • 2010-09-09
    相关资源
    最近更新 更多