5. 12. 2013
Smazání souborů staršínch než N dnů Windows dávkou
Windows dávka (.cmd nebo .bat), která maže JPG soubory starší než 30 dnů v cestě C:\Cesta\KdeChiMazat vypadá následovně:
forfiles /P "C:\Cesta\KdeChiMazat" /M *.jpg /D -30 /C "cmd.exe /c del /q @path"
Pokud chci i v podadresářích C:\Cesta\KdeChiMazat, tak přidám parametr /S.
Příkaz forfiles neumí fungovat nad UNC cestami. Ale dá se to obejít trikem s PUSHD / POPD, který dočasně UNC cestu namapuje na volné písmenko disku (pravděpodobně Z:):
pushd \\Server\Cesta\KdeChciMazat && (
forfiles /M *.jpg /D -30 /C "cmd.exe /c del /q @path"
) & popd
del /q @pathtímto
echo @path
Štítky: dávky
9. 4. 2007
Dávky ve Windows: kopie souborů na jiný disk i s právy
Jak nejrychleji (a bez stahování dodatečných utilit) zkopírovat ve Windows soubory i s právy na jiný disk (svazek)?
Čas od času potřebuje člověk přesunout data z jednoho svazku na druhý. Pokud bych použil standardní nástroj ke kopírování ve Windows, tedy Windows Explorer, tak ten při přesunu na jiný svazek nezachovává práva (ani ostatní podobná nastavení jako např. vlastníky souborů a složek a auditování).
K dispozici je ovšem mnoho dalších nástrojů - například známý ROBOCOPY. Ovšem ne vždy chce správce na server instalovat kdeco. V tomto případě nám vystačí starý obyčejný příkaz XCOPY:
XCOPY.EXE "C:\Zdrojová cesta" "D:\Cílová cesta" /E /H /K /O/E Zkopíruje adresáře a podadresáře včetně prázdných
/H Zkopíruje také skryté a systémové soubory
/K Zkopíruje atributy. Normální příkaz XCOPY odstraní atributy Jen pro čtení (Read-only)
/O Zkopíruje vlastnictví souboru a informace o seznamu přístupových práv
Pokud bychom toužili po kopii nastavení auditování, tak by v úvahu ještě připadal:
/X Zkopíruje nastavení auditování souboru (předpokládá parametr /O)
Další možnosti viz XCOPY /?
6. 1. 2007
Dávky ve Windows: pozastavení dávky na n sekund
Čas od času potřebuji napsat dávku, která by něco provedla, pak několik sekund počkala a pak pokračovala. Když jsem na Internetu hledal, jak by se to "počkání" dalo zařídit, narazil jsem nejprve na různé dodatečné utility - jako například:
- Sleep.exe z Windows Resource Kitu
Další možností by bylo si tuto utilitku sám naprogramovat. V Delphi nebo C# by to byla práce na 10 minut.
Pak jsem ale přišel na geniálně prosté řešení - není potřeba žádná další utilita, žádný Resource Kit - stačí obyčejný PING, který je v každých Windows - takto:

PING -n 3 127.0.0.1 >NUL kde 3 znamená počet sekund
127.0.0.1 je IP adresa tzv. loopbacku, abych nemusel řešit, jestli jsem připojen k síti nebo ne
>NUL zajistí, aby se nic nevypisovalo na obrazovku.
Jak prosté!