För att extrahera och analysera årets dag (DOY) från ett givet datum i en batchfil kan du använda de olika datum/tid-relaterade kommandona och lite strängmanipulation. Här är ett tillvägagångssätt du kan följa:
```
@eko av
::Datumvärde, i formatet ÅÅÅÅMMDD
ange DATE_VALUE=20220715
::Extrahera månads- och dagdelarna
ställ in MONTH=%DATE_VALUE:~4,2%
set DAY=%DATE_VALUE:~6,2%
::Konvertera månaden till ett tal i intervallet 1 till 12 med CHOICE /N (om det behövs)
om %MONTH% NEQ 1 om %MONTH% NEQ 2 om %MONTH% NEQ 3 ...
val /n /c:123456789101112
::Använd delarna MÅNAD och DAG för att beräkna DOY
ställ in DOY=0
::Lägg till antalet dagar för varje månad (31 för jan, 28 eller 29 för februari, 31 för mars, ...)
om %MONTH% GEQ 2 ( ställ in /a DOY+=31 )
om %MONTH% GEQ 3 ( ställ in /a DOY+=28 )
om %MONTH% GEQ 4 ( ställ in /a DOY+=31 )
om %MONTH% GEQ 5 ( ställ in /a DOY+=30 )
om %MONTH% GEQ 6 ( ställ in /a DOY+=31 )
om %MONTH% GEQ 7 ( ställ in /a DOY+=30 )
om %MONTH% GEQ 8 ( ställ in /a DOY+=31 )
om %MONTH% GEQ 9 ( ställ in /a DOY+=31 )
om %MONTH% GEQ 10 (ställ in /a DOY+=30)
om %MONTH% GEQ 11 ( ställ in /a DOY+=31 )
om %MONTH% GEQ 12 ( ställ in /a DOY+=30 )
::Lägg till dagnumret
ställ in /a DOY+=%DAY%
::Visa DOY
echo Day of Year (DOY):%DOY%
paus
```
Förklaringar:
1. Extrahera datumdelar :Använd `%DATE_VALUE:~4,2%` för att extrahera månaden (4:e till 5:e tecknet) och `%DATE_VALUE:~6,2%` för att extrahera dagen.
2. Konvertera månadsnummer :Använd `CHOICE /N` för att få ett numeriskt månadsnummer om det inte är i ett standardformat.
3. Beräkna DOY :Beräkna DOY genom att gradvis lägga till antalet dagar för varje månad från och med februari.
4. Visa DOY :Visa den beräknade DOY med `eko`.
Detta tillvägagångssätt tillhandahåller en grundläggande metod för att analysera dagen på året från en given datumsträng. Du kan ändra skriptet enligt dina specifika krav.