这是针对当前日期,我们如何使用昨天的日期......?
@echo off
set YYYYMMDD=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
set a=%YYYYMMDD%
echo %a%
答案 0 :(得分:1)
尝试这种更短的方法(以及本主题中唯一的纯批处理解决方案):
@echo off
setlocal EnableDelayedExpansion
set /A "YYYY=%DATE:~10,4%, MM=1%DATE:~4,2%-100, DD=1%DATE:~7,2%-101, Feb=28+^!(YYYY%%4)"
set "DPM= 31 31 %Feb% 31 30 31 30 31 31 30 31 30"
if %DD% equ 0 set /A "MM+=M=-1,DD=0%DPM: =+^!(MM-(M+=1))*%,YYYY-=^!MM,MM+=12*^!MM"
set /A "MM+=100,DD+=100"
set "a=%YYYY%%MM:~1%%DD:~1%"
echo %a%
如果您想了解此处发生的情况,请移除@echo off
行并运行程序...
如果您仍然对使用的方法有疑问,那么您可以对+=
和!
运算符进行多项测试,以及括号如何工作。
请注意,此解决方案不可以减去不同于一天的天数。但是,插入所需的调整并不困难。
答案 1 :(得分:0)
这样的事情应该做。
> select get_lock(1234567890, 0);
ERROR 4079 (HY000) at line 1: Illegal parameter data type bigint for operation 'get_lock'
显然,将@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 %result%
pause
增加到其他数字会扣除更多天数。
只需双击批处理或从set day=-1
提示符运行。
答案 2 :(得分:0)
yesterday.bat
的脚本: @if (@x)==(@y) @end /***** jscript comment ******
@echo off
cscript //E:JScript //nologo "%~f0"
exit /b 0
@if (@x)==(@y) @end ****** end comment *********/
var d = new Date();
d.setDate(d.getDate() - 1);
var mm=(d.getMonth())+1
if (mm<10){
mm="0"+mm;
}
var dd=d.getDate();
if (dd<10) {
dd="0"+dd;
}
WScript.Echo(d.getFullYear()+""+mm+""+dd);
你可以像
一样使用它for /f %%a in ('yesterday.bat') do set "ystd=%%a"
这是一个你可能已经安装过powershell的单行程序:
powershell "[DateTime]::Today.AddDays(-1).ToString("""yyyyMMdd""")"
您可以将其分配给变量:
for /f %%a in ('powershell "[DateTime]::Today.AddDays(-1).ToString("""yyyyMMdd""")"') do set ystd=%%a