Predmet:Re: BAT file: promjena i vracanje lokalnog datuma
evo nakon napornog tjedna u petljanju sa batch fajlom.
Batch (BAT) file radi sljedece:
1. uzima danasnji datum, pretvara ga u julianski broj i stavlja u varijblu julDanasnjiDatum
2. postavlja zeljeni datum kao danasnji datum, pretvara ga u julianskibroj i stavlja u varijablu julPostavljeniDatum
3. pokrecem program
4. nakon izlaska iz programa, moguce da je proslo pola noci i datum se uvecao za jedan dan. Mogao sam to ispitati i dodati samo jedan dan ali ima nekih ljudi ostave pc upaljen i po nekoliko dana. Htio sam da tocno se izracuna broj dana provedenih sa postavljenim datumom pa sam ...
5. pretvorio trenutni datum u julianskibroj i stavio u varijablu julTrenutniDatum
6. oduzimanjem julTrenutniDatum i julPostavljeniDatum dobijemo razliku u danima koju stavljamo u varijablu razlikaDana
7. dodajemo razlikaDana na julDanasnjiDatum (datum prije pokretanja programa)
8. pretvaramo julDanasnjiDatum u gregorijanski kalendar
PreuzmiIzvorni kôd (Text):echo off
CLS
SETLOCAL
REM danasnjiDatum=DATE
SET danasnjiDatum=%date:~4,2%-%date:~7,2%-%date:~10,4%
echo DANASNJI DATUM: %danasnjiDatum%
rem echo dan= %date:~4,2%
rem echo mjesec= %date:~7,2%
rem echo godina= %date:~10,4%
REM pretvori danasnjiDatum u julianski kalendar
SET mm= %date:~7,2%
SET dd=%date:~4,2%
SET year=%date:~10,4%
CALL :convjdate
SET julDanasnjiDatum=%jdate%
REM postaviDatum
SET staviMjesec=7
SET staviDan=14
SET staviGodina=2011
DATE=%staviDan%-%staviMjesec%-%staviGodina%
REM pretvori postavljenji datum u julianski
SET mm= %date:~7,2%
SET dd=%date:~4,2%
SET year=%date:~10,4%
CALL :convjdate
SET julPostavljeniDatum=%jdate%
REM pokreni program
echo POSTAVLJENI DATUM PRIJE POKRETANJA PROGRAMA: %date%
echo POKRECEM PROGRAM
echo DATUM NAKON IZLASKA IZ PROGRAMA: %date%
REM pretvori trenutni datum u julijanski
SET mm= %date:~7,2%
SET dd=%date:~4,2%
SET year=%date:~10,4%
CALL :convjdate
SET julTrenutniDatum=%jdate%
REM razlika trenutnog datuma i postavljenog datuma
set /a razlikaDana=%julTrenutniDatum%-%julPostavljeniDatum%
echo razlika u danima je: %razlikaDana% dana
REM OVDJE JAVI GRESKU
REM dodajem razliku dana na danasnjiDatum
SET /A julNoviDatum=%julDanasnjiDatum%+%razlikaDana%
REM pretvori julNoviDatum u gregorijanski
CALL :convgdate
echo NOVI DANASNJI DATUM: %DD%-%MM%-%YYYY%
echo POSTAVI NOVI DANASNJI DATUM
REM postavi danasnji datum na novi datum
DATE=%DD%-%MM%-%YYYY%
echo DANASNJI DATUM: %date%
pause
GOTO exit
REM POTPROGRAMI
:convjdate
:: konvertira gregorijanski u julianski
SET /A Month1 = ( %MM% - 14 ) / 12
SET /A Year1 = %year% + 4800
SET /A jdate = 1461 * ( %Year1% + %Month1% ) / 4 + 367 * ^
( %MM% - 2 -12 * %Month1% ) / 12 - ( 3 * ( ( %Year1% + %Month1% + 100 ) / ^
100 ) ) / 4 + ^%DD% - 32075
GOTO:EOF
:convgdate
set /a L= %julNoviDatum%+68569, N= 4*L/146097, L= L-(146097*N+3)/4, I= 4000*(L+1)/1461001
set /a L= L-1461*I/4+31, J= 80*L/2447, K= L-2447*J/80, L= J/11
set /a J= J+2-12*L, I= 100*(N-49)+I+L
set /a YYYY= I, MM=100+J, DD=100+K
set MM=%MM:~-2%
set DD=%DD:~-2%
GOTO: EOF
e sada, ovo radi ali ima jednu gresku koja se javi u redu gdje sam napisao a to je :
The system cannot find the batch label specified -
eto bas tako pise kako sam napisao. zna li netko?
zivot je moja domovina.
Ovaj post je ureden
5
puta. Posljednja izmjena 17.10.2016 11:48 od strane Avko.