asmodeus94

bckup

Dec 8th, 2012
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 7.34 KB | None | 0 0
  1. {Dwa programy wspolpracujace ze soba: kopiaT i kopia
  2. kopiaT: tworzy kiedy.txt i kopia.bat
  3. kopia: umieszczony w autostarcie wywoluje plik kopia.bat, w zaleznosci od wartosci w kiedy.txt}
  4. program kopiaT;
  5. uses crt,dos;
  6. type
  7. opcjaStan = record
  8. tekst : string;
  9. stan : byte;
  10. param : string;
  11. end;
  12. const doK=11;
  13. var
  14. t : text;
  15. str,lokZ,lokD : string;
  16. wyborLicz : byte;
  17. stan : integer;
  18. tabMenuT : array [1..doK,1..2] of opcjaStan;
  19. {*** sekcja menu ***}
  20. procedure menuTablica; {optymalizacja, zeby rekurencyjnie}
  21. begin                  {nie nadpisywal tablicy pare raz}
  22.  {glowneMenu}
  23.  tabMenuT[1,1].tekst:='/a (kopiuje pliki zrodlowe [z atrybutem archive])';tabMenuT[1,1].param:='/a';
  24.  tabMenuT[2,1].tekst:='/h (kopiuje pliki z atrybutami [ukryty, systemowy)';tabMenuT[2,1].param:='/h';
  25.  tabMenuT[3,1].tekst:='/p (zapytanie "Y/N?")';tabMenuT[3,1].param:='/p';
  26.  tabMenuT[4,1].tekst:='/s (kopiuje katalogi i podkatalogi [jezeli nie puste])';tabMenuT[4,1].param:='/s';
  27.  tabMenuT[5,1].tekst:='/e (kopiuje kazdy podkatalog, nawet jezeli jest pusty)';tabMenuT[5,1].param:='/e';
  28.  tabMenuT[6,1].tekst:='/v (weryfikacja kazdego  zapisu)';tabMenuT[6,1].param:='/v';
  29.  tabMenuT[7,1].tekst:='/w (pauza przed  rozpoczeciem  kopiowania)';tabMenuT[7,1].param:='/w';
  30.  tabMenuT[8,1].tekst:='Lokalizacja zrodlowa i docelowa';
  31.  tabMenuT[9,1].tekst:='Harmonogram backup';
  32.  tabMenuT[10,1].tekst:='Zrob';
  33.  tabMenuT[11,1].tekst:='Zamknij';
  34.  tabMenuT[1,2].tekst:='1 dzien';tabMenuT[1,2].stan:=1;
  35.  tabMenuT[2,2].tekst:='2 dni';tabMenuT[2,2].stan:=2;
  36.  tabMenuT[3,2].tekst:='3 dni';tabMenuT[3,2].stan:=3;
  37.  tabMenuT[4,2].tekst:='4 dni';tabMenuT[4,2].stan:=4;
  38.  tabMenuT[5,2].tekst:='5 dni';tabMenuT[5,2].stan:=5;
  39.  tabMenuT[6,2].tekst:='6 dni';tabMenuT[6,2].stan:=6;
  40.  tabMenuT[7,2].tekst:='7 dni';tabMenuT[7,2].stan:=7;
  41.  tabMenuT[8,2].tekst:='8 dni';tabMenuT[8,2].stan:=8;
  42.  tabMenuT[9,2].tekst:='9 dni';tabMenuT[9,2].stan:=9;
  43.  tabMenuT[10,2].tekst:='Wpisz recznie';
  44. end;
  45. procedure lokZlokD;
  46. var lokaliz : string;
  47. begin
  48. lokaliz:='Lokalizacja zrodlowa: '+lokZ;
  49. gotoxy((80-length(lokaliz)) div 2,24);write(lokaliz);
  50. lokaliz:='Lokalizacja docelowa: '+lokD;
  51. gotoxy((80-length(lokaliz)) div 2,25);write(lokaliz);
  52. end;
  53. procedure wysAktMenu(wybor,ktoreMenu : byte); {do wyswietlania menu}
  54. var i : byte;onOff,coIlBckup : string;
  55. begin clrscr;
  56. textbackground(blue);
  57. if ktoreMenu=1 then begin gotoxy(34,8);write('Przelaczniki');end ELSE begin gotoxy(25,8);write('Backup bedzie wykonywany co: ');end;
  58. textbackground(0);
  59. for i:=1 to doK do begin
  60.    textcolor(7);
  61.    if tabMenuT[i,ktoreMenu].tekst<>'' then begin
  62.    if i>1 then writeln;
  63.        if wybor=i then begin
  64.           textcolor(red);
  65.        end;
  66.        if ktoreMenu=1 then begin
  67.           if i=10 then textbackground(3);
  68.           gotoxy((80-length(tabMenuT[i,ktoreMenu].tekst)) div 2,i+8);write(tabMenuT[i,ktoreMenu].tekst);
  69.              if i<8 then begin
  70.                 gotoxy(70,i+8); if tabMenuT[i,ktoreMenu].stan = 1 then begin
  71.                 textbackground(green);textcolor(yellow);onOff:='ON';end ELSE begin
  72.                                                                         textbackground(green);textcolor(red);onOff:='OFF';
  73.                                                                         end;
  74.                 write(onOff);end;
  75.        end ELSE  begin
  76.                                    gotoxy((80-length(tabMenuT[i,2].tekst)) div 2,i+8);write(tabMenuT[i,ktoreMenu].tekst);
  77.                               end;
  78.    end;
  79.    textbackground(0);textcolor(7);
  80.    end;
  81. lokZlokD;
  82. coIlBckup:='Backup co dni: ';
  83. gotoxy((80-length(coIlBckup)) div 2,23);write(coIlBckup);write(stan);
  84. gotoxy(1,1);
  85. end;
  86. procedure menu(menuPod : byte); {interakcja z uzytkownikiem (tyko zmiana wartosci)}
  87. var wyborMenu : char;wyborLicz1,wyborLicz2 : byte;
  88. begin
  89.  wysAktMenu(wyborLicz,menuPod);
  90.  REPEAT
  91.  wyborMenu:=readkey;
  92.  case wyborMenu of
  93.   'w','W':begin wyborLicz:=wyborLicz-1; end;
  94.   's','S':begin wyborLicz:=wyborLicz+1; end;
  95.   {'a','A':begin menuPod:=menuPod-1;
  96.   if menuPod=0 then menuPod:=1;
  97.   clrscr;
  98.   for i:=1 to menuPod do begin wysAktMenu(1,i);end;menu(menuPod);break;end;}
  99.   end;
  100.  if menuPod=1 then begin
  101.  if wyborLicz=0 then wyborLicz:=11;
  102.  if wyborLicz=12 then wyborLicz:=1;end ELSE begin
  103.                                        if wyborLicz=0 then wyborLicz:=10;
  104.                                        if wyborLicz=11 then wyborLicz:=1;
  105.                                        end;
  106.  case menuPod of
  107.   1:begin wyborLicz1:=wyborLicz; end;{glowne}
  108.   2:begin wyborLicz2:=wyborLicz; end;
  109.  end;
  110.  wysAktMenu(wyborLicz,menuPod);
  111.  UNTIL (wyborMenu=#13);
  112.  if wyborLicz1<8 then begin
  113.    if tabMenuT[wyborLicz1,menuPod].stan=0 then tabMenuT[wyborLicz1,menuPod].stan:=1 ELSE tabMenuT[wyborLicz1,menuPod].stan:=0;
  114.  end;
  115.  if wyborLicz1=8 then begin
  116.  lokZ:='';lokD:='';
  117.  write('Podaj sciezke zrodlowa: ');REPEAT readln(lokZ);UNTIL lokZ<>'';
  118.  write('Podaj sciezke docelowa: ');REPEAT read(lokD);UNTIL lokD<>'';end;
  119.  if wyborLicz2 = 10 then begin write('Podaj liczbe dni: ');readln(stan);wyborLicz2:=1;end;
  120.  if wyborLicz1 = 9 then begin wyborLicz:=1;menuPod:=2;menu(2);if wyborLicz<10 then stan:=wyborLicz;
  121.  wyborLicz:=9;end;
  122.  if wyborLicz1 = 11 then halt;
  123.   if wyborLicz1<10 then menu(1);
  124. {if menuPod = 2 then begin
  125.  if wyborLicz2 = 1 then
  126.  if wyborLicz2 = 2 then
  127.  if wyborLicz2 = 3 then
  128.  if wyborlicz2 = 4 then
  129.  menuPod:=menuPod-1;
  130.  clrscr;
  131.  menu(menuPod);
  132. end;}
  133. end;
  134. {/ menu}
  135. procedure odczPara;
  136. var i : byte;
  137. begin
  138. for i:=1 to 7 do begin
  139.     if tabMenuT[i,1].stan=1 then str:=str+tabMenuT[i,1].param;
  140. end;
  141. end;
  142. procedure parametry;
  143. begin clrscr;
  144. str:='xcopy ';
  145. assign(t,'kopia.bat');
  146. rewrite(t);
  147. str:=str+lokZ+' '+lokD+' ';
  148. odczPara;
  149. str:=str+'/d/y >> c:\kopia\logs\%date%.txt';
  150. writeln(t,'@echo Skopiowane pliki (%time%): >> c:\kopia\logs\%date%.txt');
  151. writeln(t,str);
  152. {test}
  153. close(t);
  154. end;
  155. procedure kiedyBckUp;
  156. var
  157. rok,mies,dzien,dzD : word;czas : longint;
  158. begin
  159. assign(t,'kiedy.txt');
  160. rewrite(t);
  161. GetDate(rok,mies,dzien,dzD);czas:=(rok-2012)*365+mies*30+dzien+stan;
  162. writeln(t,czas);
  163. write(t,stan);
  164. close(t);
  165. end;
  166. begin
  167. wyborLicz:=1;
  168. menuTablica;menu(1);parametry;kiedyBckUp
  169. end.
  170. {kopia}
  171. {$M 8192,8192,655360}
  172. Program kopia;
  173. uses crt,dos;
  174. var
  175. rok,mies,dzien,dzD : word;
  176. czas,czasP : longint;
  177. i,byl : byte;
  178. t : text;
  179. begin
  180. clrscr;
  181. czas:=0;
  182. i:=25;
  183. byl:=0;
  184. GetDate(rok,mies,dzien,dzD);czas:=(rok-2012)*365+mies*30+dzien;
  185. assign(t,'c:\kopia\kiedy.txt');
  186. reset(t);
  187. readln(t,czasP);
  188. close(t);
  189. if czas>=czasP then begin
  190. textcolor(lightgreen);gotoxy(27,12);write('Backup zostanie wykonany za: ');gotoxy(58,12);write('s');
  191. textcolor(red);gotoxy(15,13);write('Teraz masz czas na podlaczenie pamieci zewnetrznej');
  192. gotoxy(18,25);write('Klikniecie w dowolny klawisz przerwie odliczanie.');
  193. textcolor(lightgreen);REPEAT if (i div 10 = 0)AND(byl=0) then begin gotoxy(58,12);write(' ');gotoxy(57,12);write('s');byl:=1;end;
  194. gotoxy(56,12);if i div 10 = 0 then write(' ') ELSE write('  ');gotoxy(56,12);write(i);i:=i-1;
  195. if NOT keypressed then delay(1000);
  196. UNTIL (i=0)OR(keypressed);
  197. textcolor(7);
  198. clrscr;
  199. assign(t,'c:\kopia\kiedy.txt');
  200. reset(t);
  201. readln(t,czasP);czasP:=0;
  202. readln(t,czasP);rewrite(t);
  203. writeln(t,czas+czasP);
  204. writeln(t,czasP);
  205. close(t);
  206.     if fSearch('c:\kopia\logs','') = '' then begin
  207.        mkdir('c:\kopia\logs');
  208.     end;
  209. swapvectors;
  210. Exec(GetEnv('comspec'), '/c c:\kopia\kopia.bat');
  211. swapvectors;
  212. end;
  213. end.
Advertisement
Add Comment
Please, Sign In to add comment