我尝试使用批处理脚本生成每月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)
)
答案 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)