Om de dag van het jaar (DOY) uit een bepaalde datum in een batchbestand te extraheren en te ontleden, kunt u de verschillende datum/tijd-gerelateerde opdrachten en een beetje tekenreeksmanipulatie gebruiken. Hier is één aanpak die u kunt volgen:
```
@echo uit
::Datumwaarde, in JJJJMMDD-formaat
stel DATE_VALUE=20220715 in
::Extraheer de maand- en dagdelen
stel MAAND=%DATE_VALUE in:~4,2%
stel DAG=%DATE_VALUE in:~6,2%
::Converteer de maand naar een getal tussen 1 en 12 met behulp van CHOICE /N (indien nodig)
als %MAAND% NEQ 1 als %MAAND% NEQ 2 als %MAAND% NEQ 3 ...
keuze /n /c:123456789101112
::Gebruik de MAAND- en DAG-onderdelen om de DOY te berekenen
stel DOY =0 in
::Voeg het aantal dagen voor elke maand toe (31 voor januari, 28 of 29 voor februari, 31 voor maart, ...)
als %MAAND% GEQ 2 ( set /a DOY+=31 )
als %MAAND% GEQ 3 ( set /a DOY+=28 )
als %MAAND% GEQ 4 ( set /a DOY+=31 )
als %MAAND% GEQ 5 (set /a DOY+=30 )
als %MAAND% GEQ 6 ( set /a DOY+=31 )
als %MAAND% GEQ 7 (set /a DOY+=30 )
als %MAAND% GEQ 8 ( set /a DOY+=31 )
als %MAAND% GEQ 9 ( set /a DOY+=31 )
als %MAAND% GEQ 10 (set /a DOY+=30 )
als %MAAND% GEQ 11 ( set /a DOY+=31 )
als %MAAND% GEQ 12 (set /a DOY+=30 )
::Voeg het dagnummer toe
set /a DOY+=%DAY%
::Geef de DOY weer
echo Dag van het jaar (DOY):%DOY%
pauze
```
Uitleg:
1. Datumonderdelen extraheren :Gebruik `%DATE_VALUE:~4,2%` om de maand (4e tot 5e teken) te extraheren en `%DATE_VALUE:~6,2%` om de dag te extraheren.
2. Maandnummer converteren :Gebruik `CHOICE /N` om een numeriek maandnummer te krijgen als dit niet in een standaardformaat is.
3. Bereken DOY :Bereken de DOY door vanaf februari geleidelijk het aantal dagen voor elke maand op te tellen.
4. DOY weergeven :Geef de berekende DOY weer met `echo`.
Deze aanpak biedt een basismethode voor het ontleden van de dag van het jaar uit een bepaalde datumreeks. U kunt het script aanpassen aan uw specifieke vereisten. |