Na začátku stojí klasický problém. Máme PC, k nemuž je napojeno několik kamer, které ukládají soubory na disk. Cílem je zajistit, aby nebylo ve složce víc souborů než je nezbytně nutné – např. pouze soubory za poslední týden.
K tomu nám pomůže aplikace forfiles:
FORFILES [/P název_cesty] [/M maska_hledání] [/S]
[/C příkaz] [/D [+ | -] {dd.MM.yyyy | dd}]
Popis:
Vybere soubor (nebo sadu souborů) a provede u něj
příkaz. Je to užitečné u dávkových úloh.
Seznam parametrů:
/P název_cesty Označuje cestu, kde má začít hledání.
Výchozí složkou je aktuální pracovní
adresář (.).
/M maska_hledání Hledá soubory vyhovující masce hledání.
Výchozí maska hledání je *.
/S Nařizuje příkazu FORFILES, aby procházel
také podadresáře. Je to podobné jako
u příkazu DIR /S.
/C příkaz Označuje příkaz, který má být proveden
s každým souborem.
Řetězce příkazů je nutné uzavřít do
uvozovek.
Výchozí příkaz je "cmd /c echo @file".
V řetězci příkazu je možné použít
tyto proměnné:
@file - vrátí název souboru;
@fname - vrátí název souboru
bez přípony;
@ext - vrátí pouze příponu
souboru;
@path - vrátí úplnou cestu souboru;
@relpath - vrátí relativní cestu
souboru;
@isdir - vrátí hodnotu TRUE pro adresář
a hodnotu FALSE pro soubory;
@fsize - vrátí velikost souboru
v bajtech;
@fdate - vrátí datum poslední změny
souboru;
@ftime - vrátí čas poslední změny
souboru.
Chcete-li do příkazového řádku zahrnout
speciální znaky, použijte šestnáctkový kód
znaku ve formátu 0xHH (např. 0x09 pro znak
Tabulátor). Vnitrní príkazy obsažené v
souboru CMD.exe musí predcházet retezec cmd /c.
/D datum Vybere soubory, jejichž datum poslední
zmeny je novejší nebo stejné (+), anebo
starší nebo stejné (-) jako datum zadané
ve formátu dd.MM.yyyy; případně vybere soubory,
jejichž datum poslední změny je novější nebo
stejné (+) jako aktuální datum plus "dd"
dní anebo starší nebo
stejné (-) jako aktuální datum minus "dd" dní.
Platným počtem "dd" dní může být libovolné
číslo v rozsahu od 0 do 32 768.
Není-li zadán znak "+" ani "-", je za
výchozí považován znak "+".
/? Zobrazí tuto nápovědu.
Příklady:
FORFILES /?
FORFILES
FORFILES /P C:\WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:\ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 - změněno před 30 dny"
FORFILES /D 01.01.2001
/C "cmd /c echo @fname - nové od 1. ledna 2001"
FORFILES /D +8.7.2014 /C "cmd /c echo @fname - nové dnes"
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
Chceme-li tedy smazat záznamy z kamer za poslední 3 dny, použijeme příkaz:
forfiles.exe /p d:\kamera /s /m *.avi /d -3 /c "cmd /c del @file"