ответ

1
@ECHO OFF 
SETLOCAL 
FOR %%y IN (2000 2001 2012 2013 2014 2015 2016) DO (
FOR %%d IN (
    01/01/%%y 02/01/%%y 02/28/%%y 02/29/%%y 03/01/%%y 04/01/%%y 05/01/%%y 
    06/01/%%y 07/01/%%y 08/01/%%y 09/01/%%y 10/01/%%y 11/01/%%y 12/01/%%y 12/31/%%y 
      ) DO CALL :julian %%d 
) 

GOTO :EOF 

:julian 
SET jdate=%1 
SET /a yyyy=%jdate:~-4%&SET /a mm=1%jdate:~0,2%&SET jdate=%jdate:~-4%0%jdate:~3,2% 
SET /a yyyy=yyyy %% 4 
IF %yyyy% equ 0 IF %mm% gtr 102 SET /a jdate +=1 
FOR %%a IN (02:31 03:28 04:31 05:30 06:31 07:30 08:31 09:31 10:30 11:31 12:30) DO (
FOR /f "tokens=1,2delims=:" %%b IN ("%%a") DO IF "1%%b" leq "%mm%" SET /a jdate+=%%c 
) 
ECHO %1 becomes %jdate% 
GOTO :eof 

Первая часть этой процедуры - это просто генерация дат, включая знаменательные даты для выбранных лет.

Подпрограмма :julian на самом деле делает преобразование, пройденное по дате mm/dd/yyyy из основной процедуры.

Работает для меня!

+0

Нужно ли мне указывать годы и дни? Как установить автоматическую настройку? где в этом году високосный год, в этом году - обычный год (например, 2000,2004,2008 и т. д. - для високосных лет в 2001-2003 годах, 2005-2007 и 2009-2011 гг. и т. д.), как и в случае дней. – user

+0

Цикл for ... %% y ... %% d ... представляет собой набор дат в подпрограмме ': julian', чтобы доказать, что работает эта процедура. Все, что вам нужно было бы сделать в вашей программе, было бы 'call: julian% whatever%' где 'what' содержало вашу дату в формате mm/dd/yyyy, и' jdate' был бы возвращен, содержащий преобразованное значение. – Magoo