2016-07-28 93 views
0

原問題: 我試圖將月份和年份值分配給會計年度從4月開始到3月份爲止的18個月。我期待批處理選擇系統月和年,並將其分配18個月。月份變量應以月份值遞增,直到18個月,年份變量值應該從3月份開始遞增3月底根據系統日期爲月份和期間分配變量

+0

請把原來的問題了。 – lit

回答

0

這並不難,使用一些模數學和索引編制月份名稱縮寫列表。我離開了這個機制來獲取CUR_MONTH和CUR_YEAR。你可以解析%DATE%,但那會很糟糕。尋找通過WMIC獲取當前時間戳的方法。

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 

REM Use 0-based month index. 
REM Jan = 0, Feb = 1, ... 

FOR /F "usebackq skip=1" %%a IN (`type NUL ^|WMIC Path Win32_LocalTime Get Month ^| findstr .`) DO (SET /A "CUR_MONTH=%%a - 1") 
FOR /F "usebackq skip=1" %%a IN (`type NUL ^|WMIC Path Win32_LocalTime Get Year ^| findstr .`) DO (SET /A "CUR_YEAR=%%a") 

SET "MONTH_LIST=JanFebMarAprMayJunJulAugSepOctNovDec" 
SET /A "FISCAL_YEAR=%CUR_YEAR%" 

FOR /L %%i IN (0, 1, 17) DO (
    SET /A "MONTH_INDEX=(!CUR_MONTH! + %%i) %% 12" 
    SET /A "MONTH_OFFSET=!MONTH_INDEX! * 3" 

    SET /A "VAR_INDEX=%%i + 1" 
    CALL SET "MONTH!VAR_INDEX!=%%MONTH_LIST:~!MONTH_OFFSET!,3%%" 

    IF !MONTH_INDEX! EQU 3 (SET /A "FISCAL_YEAR=!FISCAL_YEAR! + 1") 
    SET "YEAR!VAR_INDEX!=FY!FISCAL_YEAR:~2,2!" 
) 
SET "MONTH_LIST=" 
SET "MONTH_INDEX=" 
SET "MONTH_OFFSET=" 

SET MONTH 
SET YEAR 

EXIT /B 0 

,輸出是:

MONTH1=Aug 
MONTH10=May 
MONTH11=Jun 
MONTH12=Jul 
MONTH13=Aug 
MONTH14=Sep 
MONTH15=Oct 
MONTH16=Nov 
MONTH17=Dec 
MONTH18=Jan 
MONTH2=Sep 
MONTH3=Oct 
MONTH4=Nov 
MONTH5=Dec 
MONTH6=Jan 
MONTH7=Feb 
MONTH8=Mar 
MONTH9=Apr 
YEAR1=FY17 
YEAR10=FY17 
YEAR11=FY17 
YEAR12=FY17 
YEAR13=FY18 
YEAR14=FY18 
YEAR15=FY18 
YEAR16=FY18 
YEAR17=FY18 
YEAR18=FY18 
YEAR2=FY17 
YEAR3=FY17 
YEAR4=FY17 
YEAR5=FY17 
YEAR6=FY17 
YEAR7=FY17 
YEAR8=FY17 
YEAR9=FY17 
+0

我不太清楚你想要什麼。問題示例結果顯示1月份「年度7 = FY17」的年度變化。如果你想在四月份開始,試試'SET/A「CUR_MONTH = 3」'。 – lit

+0

也許我想清楚你想要什麼。你想讓FISCAL YEAR成爲APR-MAR​​嗎?請再次檢查結果。 – lit

+0

好的,@ cec4111。我想我已經爲你做了一切,這不是我應該做的。 – lit

相關問題