[Riješeno] Obriši datoteke iz foldera i subfoldera ali pod uvjetom (starije od datuma i vremena)

[Riješeno] Obriši datoteke iz foldera i subfoldera ali pod uvjetom (starije od datuma i vremena)

offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

Sorry dečki što sam počeo zatrpavati forum svojim problemima, pa ću se tako i u ovoj temi raspisati jer ne smijem pogriješiti.
Pretpostavljam da će mnogi odustati od čitanja teme jer ima previše teksta, ali mislim da je bolje da odmah napišem svu problematiku da nema puno podpitanja.

Tako je to kada sam radio "kamenom sjekirom" web prije 8 godina i napravio grešku pa sada mučim muku. Ima raznih uputa na internetu ali se ne usudim nešto raditi da ne skršim moj kompletan web.
Napominjem da nisam programer pa mi trebaju neke konkretnije upute što i kako?
I naravno ako može u VBS kodu a ne u PHP ili još bolje ako postoji neka programska aplikacija jer za sada znam baratati samo samo sa VBS i EXE files :-)

Postavljam novu temu vezanu za prethodnu http://www.mycity.rs/Opste-programiranje/Kopiranje.....-file.html ali samo zato s razlogom da bi budući forumaši lakše pronalazili temu u pretraživanju foruma.
Vezano za prethodne dvije teme pojavio mi se novi problem.

primjer:
imam u C:\Temp hrpu foldera i subfoldera. U njima se nalazi preko 1800 *.HTML files
Preko TXT editora (UE program) izvršim neke izmjene u nekim datotekama. Te izmjene se recimo izvrše na neki određen broj HTML datoteka (koristim TCMD u kojem vidim taj uvjet)

Nakon završenih izmjena ja osobno ne znam u kojim datotekama su te izmjene izvršene (tj. znam preko UE ali bi onda morao opet to sve kopirati sa cijelom strukturom kao što sam želio u ovoj temi http://www.mycity.rs/Opste-programiranje/Kopiranje.....-file.html ali mi je to nepouzdano za sada. A ova tema mi je jako bitna iz drugih razloga.
No za sada NISAM RIJEŠIO 100% pouzdano i sigurno kopiranje sa strukturom (a ne smijem se zezati da ne bude kako treba jer mogu uništiti svoj web)

Manualnim pregledom mogu pogledati saznati tako što vidim datum i vrijeme izmjene za svaku datoteku. Ići iz foldera u subfolder i pregledavati koja datoteka ima taj datum i vrijeme trajalo bi satima.

Sada sam u potrazi za EXE programom ili VBS skriptom koja može vidjeti te datume i vrijeme (sat:minuta) i izlistati mi opet strukturalno barem u neku datoteku 'promjene.txt' ali tako da se vidi putanja do te datoteke tako da bi ih mogao kopirati tj izvući iz te hrpe datoteka sa strukturom foldera ako i kada riješim pouzdano kopiranje.
Naravno bilo bi odlično kada bi aplikacija postavila pitanje sa poljem u koje trebam upisati (uvjet) datum i vrijeme kao i korijenski folder-putanju
#############################################

Pojednostavljeno: jedna od ovih opcija mi je potrebna a ne znam ima li program koji bi ovo odradio, zbog uvjeta). Naravno ovo su moje laičke zamisli.

OPCIJA 1.
listing i KOPIRANJE datoteka koje ispunjavaju uvjet (dd.mm.yyyy hh:mm)

1. Napravim izmjene u html kodu sa Find/Replace kroz UE
2. Od 1800 datoteka te izmjene su izvršene recimo u 850 datoteka.
3. Trebam program koji će pregledati sve foldere i subfoldere i pronaći datoteke (dakle tih 850 datoteka) koje IMAJU datum '25.04.2014 09:04' (ovaj datum i vrijeme su uvjet)
4. Izlistati u TXT datoteku sve datoteke koje ispunjavaju uvjet i KOPIRATI ih strukturalno u neki novi glavni destinacijski folder.
- Ovo je opet vezano jednim dijelom za kopiranje iz prethodne teme?

tako da bi nakon ovoga te izdvojene datoteke mogao uploadati na web server.

OPCIJA 2.
listing i BRISANJE svih datoteka koje ne ispunjavaju uvjet. Dakle nemaju datum i vrijeme koje sam postavio.

1. Napravim izmjene u html kodu sa Find/Replace
2. Od 1800 datoteka te izmjene su izvršene recimo u 850 datoteka.
3. Trebam program koji će pregledati sve foldere i subfoldere i pronaći datoteke koje NEMAJU datum '25.04.2014 09:04' (ovo je uvjet)
4. Izlistati u TXT datoteku sve datoteke (1800-850= dakle 950 komada) koje NE ISPUNJAVAJU UVJET i OBRISATI ih, tako da mi ostanu samo one koje sam editirao sa UE u određenom datumu i vremenu

tako da bi nakon ovoga brisanje datoteka koje ne ispunjavaju uvjet imao samo editirane datoteke koje trebam uploadati na web server.

VAŽNO! program ne smije obrisati strukturu foldera i subfoldera, već damo datoteke koje imaju extenziju HTML a ne ispunjavaju uvjet.

##############################################

Našao sam neke kodove ali za Linux što mi ne pomaže.
Ima ih i za Win ali je ih ne znam prepraviti (jer nisam programer) a i ne znam u kojem programskom jeziku su pisane i što i kako raditi s njima (osim VBS koji sam naučio pokretati).

Recimo poput ovog

- http://www.computerhope.com/forum/index.php?topic=63032.20;wap2
- http://superuser.com/questions/671280/delete-all-f.....in-folders
- http://gallery.technet.microsoft.com/scriptcenter/.....d-2eb27869

Ovo ispod je dosta interesantan kod ali kako ga prepraviti tj. koliko vidim nema u uvjet uključene minute?

Citat:You can misuse Robocopy to delete old files, filter for certain extensions and exclude multiple directories from scanning - all in one command.

md C:\TrashMe robocopy C:\ C:\TrashMe *.cfg *.hdr *.txt *.dat /MOVE /E /MINAGE:365 /CREATE /R:1 /W:1 /XD C:\dir1 C:\dir2 C:\TrashMe rd C:\TrashMe

The batch will create a temporary trash folder named TrashMe.
Robocopy will than move (not copy!) all desired files (correct extension and modified time stamp older than 365 days) to that trash folder. You exclude multiple folders with the /XD switch.
The last action is to remove the trash folder containing all found old files which.


PONAVLJAM jako mi je bitan UVJET datum i vrijeme i to kao uvjet u formatu 'dd.mm.yyyy hh:mm'
Zna li netko program koji ovo može odraditi tj da radi sa navedenim "uvjetom" tako da mogu u polje za postavljanje uvjeta upisati 'dd.mm.yyyy hh:mm' editiranja?

Ne tražim ovdje da mi netko 'odradi domaći zadatak', već možda postavi neki link na kojem se opisuje i ima rješenje mog problema ili već gotovu programsku aplikaciju sa ovakvim mogućnostima. Osim ako ima entuzijasta sa viškom slobodnog vremena :-)

pozdrav



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • dr_Bora  Male
  • Anti Malware Fighter
    Rank 2
  • Pridružio: 24 Jul 2007
  • Poruke: 12280
  • Gde živiš: Höganäs, SE

Ne znam da li ti ovo još uvek treba, ali može da posluži i za neke druge stvari pa evo... Opcija 2.

Dve bitne stvari:

1. ti pominješ ovaj oblik: 25.04.2014 09:04

Tebi program tako prikaže vreme modifikacije. Da promeniš region and language settings, video bi drugačiji prikaz. Zašto ti ovo govorim?
Zato što će skripta da radi sa onim formatom datuma i vremena koji se koristi na tvom PC-ju.
Ovo nije nikakav problem, samo se radi o tome da će skripta insistirati da se podaci unesu u tom obliku.

Konkretno, kod mene na PC-ju je bilo šta od ovoga prihvatljivo:

25.04.2014 09:04
25.4.2014 09:04
25.4.14 09:04
25.4.14 9:4
... i slične kombinacije.

Sve će biti pravilno obrađeno. U svakom slučaju, u promptu će biti postavljena default vrednost (trenutni datum i vreme) tako da vidiš koji format je optimalan.


2. skripta se ne snalazi sa razlikom u vremenu vezanom za daylight saving. Znači, za file modifikovan u januaru u 20h ti treba da uneseš 21h kako bi dobio efekat koji želiš. Nažalost, nisam našao jednostavan način u VBS-u da ovo rešim. Kontam da tebi ovo nije neki konkretan problem.


Upotreba: drag & drop foldera. Dobićeš par pitanja i na kraju summary:





- unos datuma i vremena modifikacije
- unos ekstenzije file-ova koje treba obraditi (default: html; ali može biti bilo šta)
- brisati ili samo napraviti listu
- potvrda


+ Primeri logova



Set oFSO = CreateObject("Scripting.FileSystemObject") Sub CheckMatch(sFilePath)   Set oFile = oFSO.GetFile(sFilePath)   sModifiedDate = CDate(oFile.DateLastModified)   sModifiedDate = FormatDateTime(sModifiedDate, 2) & " " & FormatDateTime(sModifiedDate,4)   If sModifiedDate <> sDateToFind Then DeleteAndLog sFilePath End Sub Sub ShowSubFolders(Folder)   For Each Subfolder In Folder.SubFolders     Set objFolder = oFSO.GetFolder(Subfolder.Path)     Set colFiles = objFolder.Files     For Each objFile In colFiles       If LCase(oFSO.GetExtensionName(objFile.Path)) = sExt Then CheckMatch objFile.Path     Next     ShowSubFolders Subfolder   Next End Sub Sub DeleteAndLog(sFilePath)   oLogFile.Write(sFilePath)   nCount = nCount + 1   On Error Resume Next   If bDelete Then oFSO.DeleteFile sFilePath, True   If Err <> 0 Then     oLogFile.WriteLine("     <--- Error!")     nErrCount = nErrCount + 1   Else     oLogFile.WriteLine("")   End If   On Error Goto 0 End Sub '----------------------------------- If WScript.Arguments.length = 0 Then   MsgBox "Drag and drop a folder with html files"   WScript.Quit End If sStartFolder = WScript.Arguments(0) If Not oFSO.FolderExists(sStartFolder) Then   MsgBox "This is not a folder!"   WScript.Quit End If On Error Resume Next bDateOK = False While Not bDateOK     sDate = InputBox("Enter date and time of change:", "Search for files modified on...", FormatDateTime(Date(), 2) & " " & FormatDateTime(Time(),4))   If sDate = "" Then WScript.Quit   sDateToFind = CDate (sDate)   If Err = 0 Then bDateOK = True   Err.Clear     sExt = InputBox("Enter file extension to process:", "Search for files of type...", "html")   If sExt = "" Then WScript.Quit   sExt = LCase(sExt)     bDelete = False   If MsgBox("Delete files that are not modified on specified date and time?" & vbCrLf & vbCrLf & "Yes - delete files" & vbCrLf & vbCrLf & "No - don't delete, only list files", 4) = 6 Then bDelete = True     If bDateOK Then     If MsgBox("You entered:  " & sDate & vbCrLf & vbCrLf & FormatDateTime(sDateToFind, 1) & " " & FormatDateTime(sDateToFind,4) & vbCrLf & vbCrLf & "File extension: " & sExt & vbCrLf & vbCrLf & "In folder: " & sStartFolder & vbCrLf & vbCrLf & "Delete files: " & bDelete & vbCrLf & vbCrLf  & "Is this correct?", 4) <> 6 Then bDateOK = False   End If Wend sDateToFind = FormatDateTime(sDateToFind, 2) & " " & FormatDateTime(sDateToFind,4) On Error Goto 0 Set oLogFile = oFSO.OpenTextFile(oFSO.GetParentFolderName(WScript.ScriptFullName) & "\Log_find_changed.txt", 2, True) Set objFolder = oFSO.GetFolder(sStartFolder) Set colFiles = objFolder.Files nCount = 0 nErrCount = 0 For Each objFile In colFiles   If LCase(oFSO.GetExtensionName(objFile.Path)) = sExt Then CheckMatch objFile.Path Next ShowSubfolders objFolder oLogFile.WriteBlankLines(3) If bDelete Then   oLogFile.WriteLine("Deleted " & nCount - nErrCount & " files." & vbCrLf & vbCrLf & "Number of errors: " & nErrCount) Else   oLogFile.WriteLine("Found " & nCount & " files.") End If oLogFile.Close MsgBox "Done!"



offline
  • IvanC 
  • Ugledni građanin
  • Pridružio: 30 Jun 2009
  • Poruke: 403

dr_Bora ::Ne znam da li ti ovo još uvek treba, ali može da posluži i za neke druge stvari pa evo... Opcija 2.Što da ti kažem?
mogu samo reći HVALA.
Radi upravo onako kako sam zamislio.

btw: Nakon ovih nekoliko dana kako sam se raspisao dužan sam ti neki ručak+piće Very Happy

Ko je trenutno na forumu
 

Ukupno su 956 korisnika na forumu :: 63 registrovanih, 8 sakrivenih i 885 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: aleksandarbl, arsa, babaroga, Bobrock1, bojcistv, cavatina, cenejac111, cifra, dane007, darkojbn, djboj, doklevise, Dorcolac, dule10savic, gorval, goxin, HogarStrashni, hyla, ikan, JimmyNapoli, Joco Skljoco, JOntra, jukeboxer, Kenanjoz, krkalon, Krusarac, ksyyaj, ljuba, loon123, MB120mm, mercedesamg, Mercury, mikrimaus, mile23, milenko crazy north, Milometer, nebkv, nemkea71, NoOneEver Dreams, oldtimer, operniki, pacika, panzerwaffe, procesor, raptorsi, rodoljub, sasa87, shaja1, Shinobi, sovanova95, stalja, stegonosa, vathra, Vlad000, Vlada1389, vladaa012, vladulns, vlajkox, vukdra, wizzardone, |_MeD_|, Žrnov, šumar bk2