由于vbs提供了dateadd函数,所以这个问题用vbs+bat应该比较简单一些。
@echo off
echo Wscript.echo DateAdd(WScript.Arguments(0),WScript.Arguments(1),now) >tmp1.vbs
echo.
echo.
echo 参数表达式:
echo            yyyy   年 
echo            m      月 
echo            d      日 
echo            h    小时 
echo            n    分钟 
echo            s      秒 
echo 参数格式举例: yyyy 1
echo             yyyy -1
set /p arg=输入参数:
if "%arg%" == "" goto :eof
call :dosomething %arg%
del tmp1.vbs
goto :eof
:dosomething
    for /f "tokens=1,2" %%i in ('"cscript //nologo tmp1.vbs %arg%"') do echo %%i |date & echo %%j | time
goto :eof
时间关系,仅仅测试了修改日期部分,时间部分自行测试修改。