如何使用yyyymmdd格式在批处理脚本中使用上一个日期

时间:2018-01-26 14:12:41

标签: windows batch-file cmd

这是针对当前日期,我们如何使用昨天的日期......?

@echo off
set YYYYMMDD=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2% 
set a=%YYYYMMDD%
echo %a%

3 个答案:

答案 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)

  1. 这是一个名为yesterday.bat的脚本:
  2.  @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"
    
    1. 这是一个你可能已经安装过powershell的单行程序:

      powershell "[DateTime]::Today.AddDays(-1).ToString("""yyyyMMdd""")"
      

      您可以将其分配给变量:

      for /f %%a in ('powershell "[DateTime]::Today.AddDays(-1).ToString("""yyyyMMdd""")"') do set ystd=%%a