批处理文件中的日期列表

时间:2018-02-22 23:26:12

标签: batch-file cmd

我尝试使用批处理脚本生成每月12个月的未来日期列表。我希望这样的输出日期(第一组是月份):

02-23-2018
03-23-2018
04-23-2018
05-23-2018
06-23-2018
07-23-2018
08-23-2018
09-23-2018
10-23-2018
11-23-2018
12-23-2018
01-23-2019
02-23-2019

我将这些未来日期作为另一个脚本的一部分使用。这是我到目前为止所得到的,但似乎没有正确地在循环中输出变量?

除非某人有类似的东西,否则将计算未来日期?

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

SET DATE_MONTH = 
SET DATE_DAY = 
SET DATE_YEAR = 


: ESTABLISH INITIAL TOKENS
FOR /f "tokens=2-4 delims=/ " %%a IN ('date /t') DO (SET /a DATE_DAY_RAW = %%b)
FOR /f "tokens=2-4 delims=/ " %%a IN ('date /t') DO (SET /a DATE_MONTH_RAW = %%a)
FOR /f "tokens=2-4 delims=/ " %%a IN ('date /t') DO (SET /a DATE_YEAR_RAW = %%c)

: REMOVE LEADING ZERO
SET char = %DATE_MONTH_RAW:~0,1%
SET DATE_MONTH_RAW = %char:~1%
if [!char!] EQU [0] SET DATE_MONTH_RAW = !DATE_MONTH_RAW:~1!  

: LOOP THROUGH 12 MONTHS OF DATES

FOR /L %%G IN (1,1,12) DO (

    : CORRECT LEADING MONTHS
    SET DATE_MONTH = 00!DATE_MONTH_RAW!
    SET DATE_MONTH = !DATE_MONTH:~-2!

    : CORRECT LEADING DAYS
    SET DATE_DAY =00!DATE_DAY_RAW!
    SET DATE_DAY =!DATE_DAY:~-2!

    : CORRECT YEARS
    SET DATE_YEAR = !DATE_YEAR_RAW!

    : OUTPUT
    ECHO Date now: !DATE_MONTH!-!DATE_DAY!-!DATE_YEAR!


    : INCREMENT MONTH FOR NEXT LOOP
    SET /a DATE_MONTH_RAW = !DATE_MONTH_RAW! + 1

    : CORRECT YEAR
    IF "!DATE_MONTH_RAW!" == "12" (SET /a DATE_MONTH_RAW = 1)

)

1 个答案:

答案 0 :(得分:0)

批次没有日期/时间计算方法。您可以自己编写(这里有几个示例),但最好使用Powershell为您完成。

这会从定义的一天获得十二个日期,它们之间的距离为30天(这是我从您的评论中读到的内容)

(注意:某些月份可能会跳过或发生两次)

@echo off
rem setlocal enabledelayedexpansion
set "datum=30.01.2017"  REM this format is due to my localization

for /l %%d in (0,1,11) do (
  for /f "delims=" %%a in ('powershell "(get-date('%datum%')).AddDays(+%%d*30).ToString('dd.MM.yyyy')"') do echo %%a
)

如果您真的想要从今天开始工作",请将(get-date('%datum%'))替换为(get-date)