Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {Dwa programy wspolpracujace ze soba: kopiaT i kopia
- kopiaT: tworzy kiedy.txt i kopia.bat
- kopia: umieszczony w autostarcie wywoluje plik kopia.bat, w zaleznosci od wartosci w kiedy.txt}
- program kopiaT;
- uses crt,dos;
- type
- opcjaStan = record
- tekst : string;
- stan : byte;
- param : string;
- end;
- const doK=11;
- var
- t : text;
- str,lokZ,lokD : string;
- wyborLicz : byte;
- stan : integer;
- tabMenuT : array [1..doK,1..2] of opcjaStan;
- {*** sekcja menu ***}
- procedure menuTablica; {optymalizacja, zeby rekurencyjnie}
- begin {nie nadpisywal tablicy pare raz}
- {glowneMenu}
- tabMenuT[1,1].tekst:='/a (kopiuje pliki zrodlowe [z atrybutem archive])';tabMenuT[1,1].param:='/a';
- tabMenuT[2,1].tekst:='/h (kopiuje pliki z atrybutami [ukryty, systemowy)';tabMenuT[2,1].param:='/h';
- tabMenuT[3,1].tekst:='/p (zapytanie "Y/N?")';tabMenuT[3,1].param:='/p';
- tabMenuT[4,1].tekst:='/s (kopiuje katalogi i podkatalogi [jezeli nie puste])';tabMenuT[4,1].param:='/s';
- tabMenuT[5,1].tekst:='/e (kopiuje kazdy podkatalog, nawet jezeli jest pusty)';tabMenuT[5,1].param:='/e';
- tabMenuT[6,1].tekst:='/v (weryfikacja kazdego zapisu)';tabMenuT[6,1].param:='/v';
- tabMenuT[7,1].tekst:='/w (pauza przed rozpoczeciem kopiowania)';tabMenuT[7,1].param:='/w';
- tabMenuT[8,1].tekst:='Lokalizacja zrodlowa i docelowa';
- tabMenuT[9,1].tekst:='Harmonogram backup';
- tabMenuT[10,1].tekst:='Zrob';
- tabMenuT[11,1].tekst:='Zamknij';
- tabMenuT[1,2].tekst:='1 dzien';tabMenuT[1,2].stan:=1;
- tabMenuT[2,2].tekst:='2 dni';tabMenuT[2,2].stan:=2;
- tabMenuT[3,2].tekst:='3 dni';tabMenuT[3,2].stan:=3;
- tabMenuT[4,2].tekst:='4 dni';tabMenuT[4,2].stan:=4;
- tabMenuT[5,2].tekst:='5 dni';tabMenuT[5,2].stan:=5;
- tabMenuT[6,2].tekst:='6 dni';tabMenuT[6,2].stan:=6;
- tabMenuT[7,2].tekst:='7 dni';tabMenuT[7,2].stan:=7;
- tabMenuT[8,2].tekst:='8 dni';tabMenuT[8,2].stan:=8;
- tabMenuT[9,2].tekst:='9 dni';tabMenuT[9,2].stan:=9;
- tabMenuT[10,2].tekst:='Wpisz recznie';
- end;
- procedure lokZlokD;
- var lokaliz : string;
- begin
- lokaliz:='Lokalizacja zrodlowa: '+lokZ;
- gotoxy((80-length(lokaliz)) div 2,24);write(lokaliz);
- lokaliz:='Lokalizacja docelowa: '+lokD;
- gotoxy((80-length(lokaliz)) div 2,25);write(lokaliz);
- end;
- procedure wysAktMenu(wybor,ktoreMenu : byte); {do wyswietlania menu}
- var i : byte;onOff,coIlBckup : string;
- begin clrscr;
- textbackground(blue);
- if ktoreMenu=1 then begin gotoxy(34,8);write('Przelaczniki');end ELSE begin gotoxy(25,8);write('Backup bedzie wykonywany co: ');end;
- textbackground(0);
- for i:=1 to doK do begin
- textcolor(7);
- if tabMenuT[i,ktoreMenu].tekst<>'' then begin
- if i>1 then writeln;
- if wybor=i then begin
- textcolor(red);
- end;
- if ktoreMenu=1 then begin
- if i=10 then textbackground(3);
- gotoxy((80-length(tabMenuT[i,ktoreMenu].tekst)) div 2,i+8);write(tabMenuT[i,ktoreMenu].tekst);
- if i<8 then begin
- gotoxy(70,i+8); if tabMenuT[i,ktoreMenu].stan = 1 then begin
- textbackground(green);textcolor(yellow);onOff:='ON';end ELSE begin
- textbackground(green);textcolor(red);onOff:='OFF';
- end;
- write(onOff);end;
- end ELSE begin
- gotoxy((80-length(tabMenuT[i,2].tekst)) div 2,i+8);write(tabMenuT[i,ktoreMenu].tekst);
- end;
- end;
- textbackground(0);textcolor(7);
- end;
- lokZlokD;
- coIlBckup:='Backup co dni: ';
- gotoxy((80-length(coIlBckup)) div 2,23);write(coIlBckup);write(stan);
- gotoxy(1,1);
- end;
- procedure menu(menuPod : byte); {interakcja z uzytkownikiem (tyko zmiana wartosci)}
- var wyborMenu : char;wyborLicz1,wyborLicz2 : byte;
- begin
- wysAktMenu(wyborLicz,menuPod);
- REPEAT
- wyborMenu:=readkey;
- case wyborMenu of
- 'w','W':begin wyborLicz:=wyborLicz-1; end;
- 's','S':begin wyborLicz:=wyborLicz+1; end;
- {'a','A':begin menuPod:=menuPod-1;
- if menuPod=0 then menuPod:=1;
- clrscr;
- for i:=1 to menuPod do begin wysAktMenu(1,i);end;menu(menuPod);break;end;}
- end;
- if menuPod=1 then begin
- if wyborLicz=0 then wyborLicz:=11;
- if wyborLicz=12 then wyborLicz:=1;end ELSE begin
- if wyborLicz=0 then wyborLicz:=10;
- if wyborLicz=11 then wyborLicz:=1;
- end;
- case menuPod of
- 1:begin wyborLicz1:=wyborLicz; end;{glowne}
- 2:begin wyborLicz2:=wyborLicz; end;
- end;
- wysAktMenu(wyborLicz,menuPod);
- UNTIL (wyborMenu=#13);
- if wyborLicz1<8 then begin
- if tabMenuT[wyborLicz1,menuPod].stan=0 then tabMenuT[wyborLicz1,menuPod].stan:=1 ELSE tabMenuT[wyborLicz1,menuPod].stan:=0;
- end;
- if wyborLicz1=8 then begin
- lokZ:='';lokD:='';
- write('Podaj sciezke zrodlowa: ');REPEAT readln(lokZ);UNTIL lokZ<>'';
- write('Podaj sciezke docelowa: ');REPEAT read(lokD);UNTIL lokD<>'';end;
- if wyborLicz2 = 10 then begin write('Podaj liczbe dni: ');readln(stan);wyborLicz2:=1;end;
- if wyborLicz1 = 9 then begin wyborLicz:=1;menuPod:=2;menu(2);if wyborLicz<10 then stan:=wyborLicz;
- wyborLicz:=9;end;
- if wyborLicz1 = 11 then halt;
- if wyborLicz1<10 then menu(1);
- {if menuPod = 2 then begin
- if wyborLicz2 = 1 then
- if wyborLicz2 = 2 then
- if wyborLicz2 = 3 then
- if wyborlicz2 = 4 then
- menuPod:=menuPod-1;
- clrscr;
- menu(menuPod);
- end;}
- end;
- {/ menu}
- procedure odczPara;
- var i : byte;
- begin
- for i:=1 to 7 do begin
- if tabMenuT[i,1].stan=1 then str:=str+tabMenuT[i,1].param;
- end;
- end;
- procedure parametry;
- begin clrscr;
- str:='xcopy ';
- assign(t,'kopia.bat');
- rewrite(t);
- str:=str+lokZ+' '+lokD+' ';
- odczPara;
- str:=str+'/d/y >> c:\kopia\logs\%date%.txt';
- writeln(t,'@echo Skopiowane pliki (%time%): >> c:\kopia\logs\%date%.txt');
- writeln(t,str);
- {test}
- close(t);
- end;
- procedure kiedyBckUp;
- var
- rok,mies,dzien,dzD : word;czas : longint;
- begin
- assign(t,'kiedy.txt');
- rewrite(t);
- GetDate(rok,mies,dzien,dzD);czas:=(rok-2012)*365+mies*30+dzien+stan;
- writeln(t,czas);
- write(t,stan);
- close(t);
- end;
- begin
- wyborLicz:=1;
- menuTablica;menu(1);parametry;kiedyBckUp
- end.
- {kopia}
- {$M 8192,8192,655360}
- Program kopia;
- uses crt,dos;
- var
- rok,mies,dzien,dzD : word;
- czas,czasP : longint;
- i,byl : byte;
- t : text;
- begin
- clrscr;
- czas:=0;
- i:=25;
- byl:=0;
- GetDate(rok,mies,dzien,dzD);czas:=(rok-2012)*365+mies*30+dzien;
- assign(t,'c:\kopia\kiedy.txt');
- reset(t);
- readln(t,czasP);
- close(t);
- if czas>=czasP then begin
- textcolor(lightgreen);gotoxy(27,12);write('Backup zostanie wykonany za: ');gotoxy(58,12);write('s');
- textcolor(red);gotoxy(15,13);write('Teraz masz czas na podlaczenie pamieci zewnetrznej');
- gotoxy(18,25);write('Klikniecie w dowolny klawisz przerwie odliczanie.');
- 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;
- gotoxy(56,12);if i div 10 = 0 then write(' ') ELSE write(' ');gotoxy(56,12);write(i);i:=i-1;
- if NOT keypressed then delay(1000);
- UNTIL (i=0)OR(keypressed);
- textcolor(7);
- clrscr;
- assign(t,'c:\kopia\kiedy.txt');
- reset(t);
- readln(t,czasP);czasP:=0;
- readln(t,czasP);rewrite(t);
- writeln(t,czas+czasP);
- writeln(t,czasP);
- close(t);
- if fSearch('c:\kopia\logs','') = '' then begin
- mkdir('c:\kopia\logs');
- end;
- swapvectors;
- Exec(GetEnv('comspec'), '/c c:\kopia\kopia.bat');
- swapvectors;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment