我试图在当天添加1但是为了可能我将日期变为单位数(因为它不能添加01到1或类似的东西)。在那之后,我不能让它回到两位数(例如:01,02,09) 我的代码如下所示:
Set /a day=%date:~1,2% (this is 2)
Set /a day+=1 (this is 3 now)
Set day=0%day% (this is zero)
这只说前面的0 我尝试了两个不同的变量,但它的工作方式相同
答案 0 :(得分:1)
通过更改此变量day=+1
中的数字将为您的结果添加更多天数,或更改为day=-1
将删除一天等等。
@echo off
set day=+1
echo>"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2)
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a"
del "%temp%\%~n0.vbs"
set "YYYY=%result:~0,4%"
set "MM=%result:~4,2%"
set "DD=%result:~6,2%"
set "result=%yyyy%-%mm%-%dd%"
echo %DD%
pause
这只会回复+1天。但是,如果您想要回显完整的日期结果,只需执行echo %result%
YYYY
,MM
和DD
已被拆分为单个变量,因此您可以根据需要使用它。
正如旁注:
echo>"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s)
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right
几乎与:
相同echo s=DateAdd("d",%day%,now) : d=weekday(s) >"%temp%\%~n0.vbs"
echo WScript.Echo year(s)^& right(100+month(s),2)^& right >>"%temp%\%~n0.vbs"
CMD
对两者都会做同样的事情,那就是将输出传递给文件。我只是这样做,所以通过读取该行,您可以立即看到该行的作用,echo
到外部文件,后面的字符串。
答案 1 :(得分:1)
正如@Squashman建议的那样,PowerShell使这很容易。
FOR /F %a IN ('powershell -NoProfile -Command "'{0:yyyy-MM-dd}' -f (Get-Date).AddDays(1)"') DO SET "NEWDATE=%a"
ECHO %NEWDATE%
在.bat脚本中,将变量%字符加倍。
FOR /F %%a IN ('powershell -NoProfile -Command "'{0:yyyy-MM-dd}' -f (Get-Date).AddDays(1)"') DO SET "NEWDATE=%%a"
ECHO %NEWDATE%
如果使用PowerShell而不是cmd,它必须包含在FOR循环中,这样更容易。
$newdate = '{0:yyyy-MM-dd}' -f (Get-Date).AddDays(1)