Probabil singurul lucru de apreciat o data cu lansarea sistemului de oparare Windows Vista este adaugarea de tool-uri noi. Intr-un articol recent va povesteam de robocopy un tool cu ajutorul caruia putem sincroniza 2 directoare (folders).
Astazi vom vorbi de forfiles, un tool la fel de util si valoros ca robocopy. Cu ajutorul acestuia putem cauta, sterge fisierelor dupa nume, extensie si dupa vechimea acestora. Cu putina indemanare se pot aplica si la directoare (folders), dar despre asta un pic mai tarziu.
Ca si in cazul lui robocopy, forfiles poate fi folosit si pentru Windows XP. Tot ce trebuie sa facem este sa il copiem undeva si sa-l executam. Putem opta sa-l copiem in c:\windows\system32 pentru a folosi comanda direct fara a scrie si calea unde a fost salvat.
forfiles find delete old files
Syntaxa este:
FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {MM/dd/yyyy | dd}]
Dar hai sa vedem cum il putem utiliza. Vom folosi ca exemplu cateva fisiere cu data si extensi diferite utilizand locatia:
D:\forfiles-test
– selectarea fisierelor cu extensie .txt
D:\>forfiles -p d:\forfiles-test /m *.*txt "file5.txt" "file6.txt" "file7.txt" D:\>
Folosim -p sau /p pentru a indica calea unde se executa comanda iar /m pentru a indica criteriul dupa care se va face cautarea/listarea.
– selectarea fisierelor cu vechime mai mare de 2 zile fata de data durenta
D:\>forfiles -p d:\forfiles-test /d -2 "file2.jpg" "file3.jpg" "file4.jpg" "fles1.jpg" D:\>
Parametrul /d il folosim pentru a specifica numarul de zile mai nou (+) sau mai vechi (-) fata de o anumita data ( “MM/dd/yyyy”) sau fata de data curenta.
Putem folosi variabile in comanda pentru a controla si cum anume sa fie output-ul comenzii.
variabile:
@file – returns the name of the file.
@fname – returns the file name without extension
@ext – returns only the extension of the file.
@path – returns the full path of the file.
@relpath – returns the relative path of the file.
@isdir – returns “TRUE” if a file type is a directory, and “FALSE” for files.
@fsize – returns the size of the file in bytes.
@fdate – returns the last modified date of the file.
@ftime – returns the last modified time of the file.
– selectarea fisierelor cu vechime mai mare de 2 zile fata de data curenta iar output-ul sa afiseze full path
D:\>forfiles -p d:\forfiles-test /d -2 /C "cmd /c echo @path" "d:\forfiles-test\file2.jpg" "d:\forfiles-test\file3.jpg" "d:\forfiles-test\file4.jpg" "d:\forfiles-test\fles1.jpg" D:\>
– stergerea fisierelor cu vechime mai mare de 2 zile fata de data curenta
D:\>forfiles -p d:\forfiles-test /d -2 /C "cmd /c del /q @path D:\>
Vom observa ca fisierele mai vechi de 2 zile au fost sterse.
Acum hai sa trecem la lucruri un pic mai complicate. Spuneam la inceutul articolului ca putem folosi forfiles si pentru selectarea/stergerea directoarelor (folders).
Avem in acelasi folder (D:\forfiles-test), avem 4 directoare (folders).
– comanda pentru listarea directoarelor (folders)
D:\>forfiles -p d:\forfiles-test /C "cmd /c if @ISDIR==TRUE echo @file "dir1" "dir2" "dir3" "dir4" D:\>
– iar daca dorim sa le stergem, comanda este:
D:\>forfiles -p d:\forfiles-test /C "cmd /c if @ISDIR==TRUE echo @file &RD /Q /S @FILE "dir1" "dir2" "dir3" "dir4" D:\>
Vom constata dupa executarea aceastei ca directoarele afisate sunt sterse.
Binenteles ca putem folosi ca si la fisiere, situatia cand vrem listarea/stergerea directoarelor (folders) vechi folosind acelasi parametru -d.
Pentru a vedea toate optiunile acestei comenzi (forfiles), foloseste comanda de mai jos si acestea se vor afisa pe ecran:
forfiles /?
Mai mute info gasiti pe site-ul celor de la Microsoft si/sau pe Wikipedia.