Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Rekurzivno kopiranje fajlova iz više foldera...

[es] :: Skript jezici :: Rekurzivno kopiranje fajlova iz više foldera...

[ Pregleda: 2415 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Doomhammer
Dusko Savanovic

Član broj: 43596
Poruke: 81
81.93.81.*



Profil

icon Rekurzivno kopiranje fajlova iz više foldera...21.06.2011. u 10:40 - pre 105 meseci
Pozdrav,

Pokušavam da automatizujem jedan dosadan posao koji treba da se odradi svaki dan ali ne pada mi na pamet način na koji da to izvedem. Plan je napraviti .bat ili .cmd skriptu koja bi se izvršavala na Win Server 2003. Situacija je slijedeća. Imam Folder_A i u njemu određen broj foldera (1...6) u svakom od tih foldera imam po 10 fajlova koji se kreiraju svaki dan (backup). Nazivi tih fajlova su djelimično random (backup_13182937.bak). U Folder_B imam identičnu strukturu foldera (1...6) i u te foldere treba da prebacim fajlove iz Folder_A koji su kreirani recimo danas, usput u Folderu_B treba da obrišem fajlove koji su prebačeni juče. Tako da na kraju poslije izvršenja skripte u Folder_B treba da bude samo po jedna kopija (najnovija). Valjda sam dobro objasnio problem, a tu je i neka ilustracija strukture foldera.

Folder_A
|--folder1 --- (fajl1, fajl2, fajl3... fajl10)
|--folder2 --- (fajl1, fajl2, fajl3... fajl10)
|--folder3 --- (fajl1, fajl2, fajl3... fajl10)
|--folder4 --- (fajl1, fajl2, fajl3... fajl10)
|--folder5 --- (fajl1, fajl2, fajl3... fajl10)
|--folder6 --- (fajl1, fajl2, fajl3... fajl10)

Folder_B
|--folder1 --- (fajl10)
|--folder2 --- (fajl10)
|--folder3 --- (fajl10)
|--folder4 --- (fajl10)
|--folder5 --- (fajl10)
|--folder6 --- (fajl10)

Neka ideja je da je prvi korak koji skripta radi taj da ide rekurzivno po folderima unutar Folder_B i briše sve fajlove (ne foldere). Nakon toga skripta bi trebalo da ide kroz foldere unutar Folder_A i upoređuje datum kreiranja fajla sa sistemskim datumom (datum kada je skripta pokrenuta) te da kopira fajl kod kojeg se utvrdi da je istog datuma u određeni folder unutar Folder_B. Da li je ovo ispravan način funkcionisanja skripte, te da li imate neku ideju koja bi pojednostavila korake? Dalje, ima li ko ideju kako ovakvu skriptu napisati? Da ne ispane da tražim nešto gotovo, cijenim i ako neko ima link ka nekom tekstu ili objašnjenju...


Linux registrated uesr No.396713
http://counter.li.org
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4867
212.200.65.*

Jabber: xfiles@elitesecurity.org


+622 Profil

icon Re: Rekurzivno kopiranje fajlova iz više foldera...21.06.2011. u 10:51 - pre 105 meseci
Za početak pogledaj ovde, drugi deo skripte:
http://www.elitesecurity.org/p1622527

Tu možeš steći neku sliku kako se "formira" ciljna putanja fajla/foldera, i i kako se može vršiti brisanje.
 
Odgovor na temu

Doomhammer
Dusko Savanovic

Član broj: 43596
Poruke: 81
81.93.81.*



Profil

icon Re: Rekurzivno kopiranje fajlova iz više foldera...22.06.2011. u 13:18 - pre 105 meseci
Hvala.
Na osnovu linka i jos nekog teksta napisao sam slijdece
Code:
@Echo off
for /f "tokens=1-3 delims=. " %%g in ('date /t') do (
set dan=%%g
set mjesec=%%h
set godina=%%i
)
cd Folder_B
D:
del /S /F *.bak
cd "Folder_A"
pause
: Problem
for /f "tokens=1 delims=" %%A in ('dir /b') do (
set ime_foldera=%%A
set ime_foldera
copy \%ime_foldera%\*%godina%_%mjesec%_%dan%_*.bak \Folder_B\%ime_foldera%\
)
pause


E sad imam problem posto ovo ne radi, a ja ne kontam zašto. Sve do labele Problem radi kako bi i trebalo i to mi je jasno. Problem se javlja u drugoj FOR petlji.
Ideja je slijedeća:
komanda "dir /b" ispiše foldere unutar trenutnog foldera, u ovom slučaju unutar Folder_A.
Pri prvom prolazu kroz petlju trebalo bi da radi slijedeće:
1. promjenljivoj "ime_foldera" da dodijeli kao vrijednost naziv prvog foldera unutar Folder_A
2. komanda set ime_foldera je tu da mogu da pratim da li se dodjeljuje pravi naziv tokom izvršavanja
3. kopira fajl iz foldera u folder gdje su imena foldera određena vrijednošću promjenljive "ime_foldera", a naziv fajla određen datumom koji se na početku definiše

Koliko sam vidio problem je u trećem koraku. Pri izvršavanju batcha i prozoru command prompta piše
Code:
ime_foldera=folder1
\\*2011_06_22_*.bak
The filename, directory name, or volume label syntax is incorrect.
        0 file(s) copied.
ime_foldera=folder2
\\*2011_06_22_*.bak
The filename, directory name, or volume label syntax is incorrect.
        0 file(s) copied.
ime_foldera=folder3
\\*2011_06_22_*.bak
The filename, directory name, or volume label syntax is incorrect.
        0 file(s) copied.
ime_foldera=folder4
\\*2011_06_22_*.bak
The filename, directory name, or volume label syntax is incorrect.
        0 file(s) copied.
ime_foldera=folder5
\\*2011_06_22_*.bak
The filename, directory name, or volume label syntax is incorrect.
        0 file(s) copied.
ime_foldera=folder6
\\*2011_06_22_*.bak
The filename, directory name, or volume label syntax is incorrect.
        0 file(s) copied.


Ovo se pojavi nakon labele Problem u kodu iznad, dakle u drugoj FOR petlji. Koliko ja vidim između \\ fali vrijednost promjenljive ime_foldera... Ima li neko ideju gdje griješim?
Linux registrated uesr No.396713
http://counter.li.org
 
Odgovor na temu

[es] :: Skript jezici :: Rekurzivno kopiranje fajlova iz više foldera...

[ Pregleda: 2415 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.