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
Pokud si nejsem jist, co bude dávka mazat, tak si mohu soubory jen zobrazit. Nahradím
del /q @path
tímto
echo @path

Štítky:

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 /?

Štítky: ,

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:

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:

Windows Vista CMD
PING -n 3 127.0.0.1 >NULkde 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é!

Štítky: ,