Centar za edukaciju-BiH



#1 07.10.2016 08:19
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


Predmet:BAT file: promjena i vracanje lokalnog datuma
Imam program koji gleda koji je danasnji datum, ako je datum > 1.1.2006 program se nece pokrenuti.
htio bi bec fajl koji bi radio sljedece:
-uzme danasnji datum u neku varijablu ili zapise na disk. Nije bitno kako ce zapamtiti danasnji datum.
-postavi danasnji datum na neki datum recimo 1.12.2005.
-pokrene program
-nakon sto izade iz vrati na danasnji datum.
primjer:
10 danasnjiDatum=6.10.2016
20 noviDatum=1.12.2005
30 start imePrograma>nakon sto izademo iz programa nastavlja od sljedeceg reda
40 Uzmemo trenutni datum, on je 2.12.2005
50 trenutniDatum=2.12.2005
60 razlikaDatuma=trenutniDatum-noviDatum
70 postaviDanasnjiDatum=danasnjiDatum+razlikaDatuma

jeli to moguce?
zivot je moja domovina.
Ovaj post je ureden 2 puta. Posljednja izmjena 07.10.2016 09:14 od strane Avko. ↑  ↓

#2 10.10.2016 20:41
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: BAT file: promjena i vracanje lokalnog datuma
Pa imas sve u bec fajlovima samo iskobinujes.
Hoces neki program da prevaris ha.
evo:
SET DATUM=%date:~0,2%-%date:~3,2%-%date:~8,2%
DATE 23-08-11
start "" "c:\Windows\System32\regedt32.exe"
DATE %DATUM%
PAUSE

Zamijeni ime i putanju programa.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 10.10.2016 21:42
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


Predmet:Re: BAT file: promjena i vracanje lokalnog datuma
Citiraj zxz:
Pa imas sve u bec fajlovima samo iskobinujes.
Hoces neki program da prevaris ha.

da, sve znas. jbg komercijalni. preskupo za mene i ono za sto mi treba. radi se o programu kvarovi auta
zivot je moja domovina.
↑  ↓

#4 17.10.2016 11:31
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


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):
  1. echo off
  2. CLS
  3. SETLOCAL
  4.  
  5. REM danasnjiDatum=DATE
  6. SET danasnjiDatum=%date:~4,2%-%date:~7,2%-%date:~10,4%
  7. echo DANASNJI DATUM:  %danasnjiDatum%
  8. rem echo dan= %date:~4,2%
  9. rem echo mjesec= %date:~7,2%
  10. rem echo godina= %date:~10,4%
  11.  
  12. REM pretvori danasnjiDatum u julianski kalendar
  13. SET mm=  %date:~7,2%
  14. SET dd=%date:~4,2%
  15. SET year=%date:~10,4%
  16. CALL :convjdate
  17. SET julDanasnjiDatum=%jdate%
  18.  
  19. REM postaviDatum
  20. SET staviMjesec=7
  21. SET staviDan=14
  22. SET staviGodina=2011
  23. DATE=%staviDan%-%staviMjesec%-%staviGodina%
  24.  
  25. REM pretvori postavljenji datum u julianski
  26. SET mm=  %date:~7,2%
  27. SET dd=%date:~4,2%
  28. SET year=%date:~10,4%
  29. CALL :convjdate
  30. SET julPostavljeniDatum=%jdate%
  31.  
  32. REM pokreni program
  33. echo POSTAVLJENI DATUM PRIJE POKRETANJA PROGRAMA: %date%
  34.  
  35. echo POKRECEM PROGRAM
  36.  
  37. echo DATUM NAKON IZLASKA IZ PROGRAMA: %date%
  38.  
  39. REM pretvori trenutni datum u julijanski
  40. SET mm=  %date:~7,2%
  41. SET dd=%date:~4,2%
  42. SET year=%date:~10,4%
  43. CALL :convjdate
  44. SET julTrenutniDatum=%jdate%
  45.  
  46. REM razlika trenutnog datuma i postavljenog datuma
  47. set /a razlikaDana=%julTrenutniDatum%-%julPostavljeniDatum%
  48. echo razlika u danima je: %razlikaDana% dana
  49.  
  50. REM OVDJE JAVI GRESKU
  51.  
  52.  
  53. REM dodajem razliku dana na danasnjiDatum
  54. SET /A julNoviDatum=%julDanasnjiDatum%+%razlikaDana%
  55.  
  56. REM pretvori julNoviDatum u gregorijanski
  57. CALL :convgdate
  58. echo NOVI DANASNJI DATUM: %DD%-%MM%-%YYYY%
  59. echo POSTAVI NOVI DANASNJI DATUM
  60.  
  61. REM postavi danasnji datum na novi datum
  62. DATE=%DD%-%MM%-%YYYY%
  63. echo DANASNJI DATUM: %date%
  64. pause
  65. GOTO exit
  66.  
  67. REM POTPROGRAMI
  68.  
  69. :convjdate
  70. :: konvertira gregorijanski u julianski
  71. SET /A Month1 = ( %MM% - 14 ) / 12
  72. SET /A Year1  = %year% + 4800
  73. SET /A jdate  = 1461 * ( %Year1% + %Month1% ) / 4 + 367 * ^
  74. ( %MM% - 2 -12 * %Month1% ) / 12 - ( 3 * ( ( %Year1% + %Month1% + 100 ) / ^
  75. 100 ) ) / 4 + ^%DD% - 32075
  76. GOTO:EOF
  77.  
  78. :convgdate
  79. set /a L= %julNoviDatum%+68569,     N= 4*L/146097, L= L-(146097*N+3)/4, I= 4000*(L+1)/1461001
  80. set /a L= L-1461*I/4+31, J= 80*L/2447,  K= L-2447*J/80,      L= J/11
  81. set /a J= J+2-12*L,      I= 100*(N-49)+I+L
  82. set /a YYYY= I,  MM=100+J,  DD=100+K
  83. set MM=%MM:~-2%
  84. set DD=%DD:~-2%
  85.  
  86. 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. ↑  ↓

#5 17.10.2016 12:52
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,644


Predmet:Re: BAT file: promjena i vracanje lokalnog datuma
Citat:
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 -

Koji je to broj reda ovdje.
Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#6 17.10.2016 18:16
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,812


Predmet:Re: BAT file: promjena i vracanje lokalnog datuma
nakon 20 reda. do 20 napravi bez greske

rijeseno!
dakle ovako, stavljajuci
echo TOCKA 1
PAUSE

echo TOCKA 2
pause

locirao sam gresku. Greska je bila u drugom potprogramu u retku GOTO :EOF (End Of File). Potprogrami u batch datoteci nisu nista drugo nego batch datoteke, dakle batch u batchu. Ako imamo vise potprograma izlaz iz pojedinog trebalo bi staviti naredbu exit /B, a ne GOTO :EOF
Zamjenom GOTO :EOF sa EXIT/B sada ne javlja nikakvu gresku
zivot je moja domovina.
Ovaj post je ureden 1 puta. Posljednja izmjena 19.10.2016 08:03 od strane Avko. ↑  ↓

Stranice (1):1


Sva vremena su GMT +01:00. Trenutno vrijeme: 6: 52 pm.