úterý 17. března 2009

Příkaz COPY nepřepisující již existující soubory

Po delší době jsem potřeboval použít v dávce program copy.exe a pomocí něj zkopírovat jenom nové soubory, abych zjistil, že to neumím.

Řekněme, že potřebuji automaticky kopírovat soubory z nějakého vzdáleného úložiště, kde mám jen práva pro čtení a bohužel je nutné, abych to dělal v dávce spouštěné na Windows 2000.
Přístup na vzdálené soubory mám přes mapování vzdáleného disku vytočením přes ISDN. Vrozená inteligence mi velela použít program copy a nastavit u něj parametr "hele koukej zkopírovat jen soubory nové a nechtěj to po mě potvrzovat".

Jaké bylo mé překvapení, když jsem zjistil, že jde buď o funkci nedokumentovanou a tedy mě skrytou, nebo funkci zcela neexistující. Naštěstí firma Microsoft má pochopení pro situace, kdy uživatelé chtějí tak nestandardní a složité funkce a přímo pro ně vytvořila další program pro kopírování, který to již umí.

Takže tradá ... místo copy.exe je třeba použít robocopy.exe. Tento program je součástí Recource Kit Tools. Pod odkazem se sice nachází verze pro Win 2003, ale po rozbalení někde alespoň na WinXP stačí program překopírovat třebas na starší Windows 2000, kde v pohodě funguje.

Syntaxe:

Syntaxe Robocopy na Wikipedii

Já potřeboval použít následující syntaxe:

robocopy odkud_kopiruji kam_kopiruji *.pripona_souboru /S /XD adresar_ktery_nechci

kde
/S značí kýžené kopírování jen nových souborů
/XD vynechání adresáře

robocopy odkud_kopiruji kam_kopiruji *.pripona_souboru /XA:atribut

kde
/XA umožní vynechat soubory označené atributem (např. ke čtení, nebo skryté)

3 komentáře:

  1. zrovna hledám něco takového, ale zjistil jsem že přepínač /S nekopíruje nové soubory ale kopíruje "neprázdné" adresáře

    OdpovědětVymazat
  2. Mě tedy kopíruje jen změněné soubory, tj buď nové, nebo upravené. Naprosto v pohodě.

    OdpovědětVymazat
  3. xcopy funguje taky úplně skvěle ((o:
    xcopy zdroj cíl /d /Y

    OdpovědětVymazat