Skip to content


Ile można wycisnąć z polecenia XCOPY?



xcopy Wiele osób szuka różnych narzędzi do wykonywania kopii zapasowych, czy też synchronizacji danych i bardzo dobrze – bo każde poszukiwanie powiększa nasz bagaż wiedzy. W poniższym tekście nie chcę ich od tego odwieść, a jedynie przypomnieć o prostym poleceniu XCOPY – jak już się znudzą poszukiwania 🙂

Odpowiadając na tytułowe pytanie – Ci co na co dzień tworzą skrypty wiedzą, że naprawdę wiele.
Przyznam się, że kiedyś nie doceniałem tego polecenia i być może dlatego, że wydawało mi się zbyt proste. Jednak to właśnie one najmniej nas zawodzą, a proste rozwiązania są najlepsze 🙂

O samy poleceniu XCOPY możemy przeczytać uruchamiając tryb „wiersz polecenia” i wpisując xcopy /?. W praktyce, polecenie możemy uzbroić w konkretne przełączniki i zazwyczaj tworzymy plik wsadowy (np. kopia.bat).

W tym prostym poniższym przykładzie kopiowany jest profil użytkownika na np. zmapowany dysk sieciowy lub na Pendrive z literką K w systemie.

@echo off
set zrodlo=”%USERPROFILE%”
set cel=”k:\_kopia_zapasowa_”
set conf=/D /S /V /C /I /H /R /Y /Z /EXCLUDE:kopia.txt
xcopy %zrodlo% %cel% %conf%

Jak widać mamy źródło, cel i conf – przełączniki, w których znajduje się między innymi /EXCLUDE: i odwołanie do pliku kopia.txt. Plik ten tworzymy w tej samej lokalizacji co kopia.bat i zawiera informacje jakich danych nie chcemy kopiować np.:

.bak
.tmp
.temp
~h
Desktop.ini
Thumbs.db
\IECompatCache\
\IETldCache\
\Temp\
\Temporary Internet Files\

Jeżeli wykonujemy sukcesywnie tylko kopię danych to pomocny jest parametr /D, który zaoszczędzi nam trochę czasu, gdyż nie będą kopiowane pliki których data się nie zmieniła na nowszą.

Przełączniki oczywiście dowolnie dobieramy wg uznania i potrzeby.

W przykładzie wykorzystane są:
/D:m-d-r Kopiuje pliki zmienione określonego dnia lub później. Jeśli nie podano daty, kopiuje tylko pliki, dla których czas wersji źródłowej jest późniejszy niż czas wersji docelowej.
/EXCLUDE:plik1[+plik2][+plik3]… Określa listę plików zawierających ciągi. Każdy ciąg powinien być w osobnym wierszu w plikach. Jeżeli jakiś ciąg pasuje do dowolnej części ścieżki absolutnej kopiowanego pliku, plik ten nie zostanie skopiowany. Na przykład, określenie ciągu postaci \obj\ lub .obj spowoduje wyłączenie wszystkich plików w podkatalogu obj lub wszystkich plików z rozszerzeniem .obj.
/S Kopiuje katalogi i podkatalogi, z wyjątkiem pustych.
/V Weryfikuje każdy nowy plik.
/C Kontynuuje kopiowanie nawet po wystąpieniu błędu.
/I Jeśli „cel” nie istnieje i kopiowany jest więcej niż jeden plik, zakłada, że „cel” musi być katalogiem.
/R Zastępuje pliki tylko do odczytu.
/Y Wyłącza monitowanie o potwierdzenie zastąpienia istniejącego pliku docelowego.
/Z Kopiuje pliki w trybie umożliwiającym ponowne uruchomienie.

Cóż, XCOPY jest prostym poleceniem i niedoskonałym w niektórych przypadkach, ale z powodzeniem możemy stosować je w wielu, nawet zaawansowanych skryptach. Należy jednak wiedzieć, że xcopy nie radzi sobie między innymi z plikami o nazwie dłuższej niż 256 znaków.

Można na koniec rzec, że podobnym narzędziem jak xcopy jest dużo sprawniejszy jego brat robocopy, ale to jak zwykle temat kolejnego artykułu.


Kategoria: Wszystkie wpisy.

Tag: , , .


Brak odpowiedzi (jeszcze)

RSS dla komentarzy do tego wpisu.



Some HTML is OK

or, reply to this post via trackback.

*



statystyka