Szalony mężczyzna piszący na klawiaturze i patrzący w kamerę Zaskoczony mężczyzna w pracy

Plik wsadowy i XCOPY – co to jest i jak tworzyć skrypty?

7 min. czytania

Plik wsadowy to prosty skrypt tekstowy dla systemu Windows, który wykonuje kolejne polecenia w wierszu poleceń, a XCOPY to jedno z najważniejszych poleceń do kopiowania plików i katalogów – idealne do tworzenia automatycznych kopii zapasowych.

Poniżej znajdziesz praktyczny poradnik: od podstaw, przez składnię XCOPY, po gotowe przykłady skryptów do wykorzystania w codziennej pracy.

Czym jest plik wsadowy?

Plik wsadowy (potocznie „bat”) to plik tekstowy z rozszerzeniem .bat lub .cmd, zawierający zestaw komend wykonywanych po kolei przez interpreter poleceń systemu Windows (cmd.exe).

Najważniejsze cechy:

  • zwykły plik tekstowy – można go edytować np. w Notatniku;
  • sekwencyjne wykonanie – interpreter czyta go linijka po linijce, od góry do dołu;
  • automatyzacja czynności – idealny do kopiowania, usuwania plików, tworzenia katalogów itp.;
  • tryb bezobsługowy – może działać wsadowo, bez interakcji z użytkownikiem.

Typowe zastosowania:

  • kopie zapasowe – na inny dysk lub do folderu sieciowego;
  • porządkowanie plików – archiwizacja logów, przenoszenie dokumentów;
  • proste instalatory i administracja – skrypty dla codziennych zadań.

Czym jest polecenie XCOPY?

Polecenie xcopy to rozszerzona wersja klasycznego polecenia copy, używana w DOS i Windows, która potrafi kopiować wiele plików oraz całe drzewa katalogów.

Najważniejsze możliwości XCOPY:

  • kopiowanie plików i katalogów – w tym wszystkich podkatalogów;
  • bogate przełączniki – uwzględnianie plików ukrytych/systemowych, pustych katalogów, zachowanie uprawnień NTFS;
  • backup całych folderów – idealne do tworzenia kopii zapasowych pełnych struktur danych.

Podstawowa składnia polecenia wygląda tak:

xcopy [ŹRÓDŁO] [CEL] [OPCJE]

Praktyczny przykład użycia z często wybieranymi opcjami:

xcopy C:\Dane D:\Backup /s /e /r /c /h /k /o /x /y

Takie polecenie kopiuje całe drzewo katalogów, łącznie z plikami ukrytymi/systemowymi i zachowaniem atrybutów oraz uprawnień.

Jak stworzyć prosty plik wsadowy?

Do stworzenia pliku wsadowego wystarczy wbudowany Notatnik lub inny edytor tekstu (np. Notepad++, Visual Studio Code).

Krok 1 – otwórz edytor tekstu. Wciśnij Windows + R, wpisz notepad i naciśnij Enter, albo uruchom dowolny edytor tekstu.

Krok 2 – wpisz polecenia. Każda linia pliku wsadowego to jedno polecenie, które normalnie można wpisać w wierszu poleceń (cmd). Wpisz poniższe trzy linie w nowym pliku:

  1. @echo off
  2. echo Witaj w moim pierwszym pliku wsadowym!
  3. pause

Opis działania poszczególnych wierszy:

  • @echo off – wyłącza wyświetlanie samych komend, aby okno było czytelniejsze;
  • echo – wyświetla tekst na ekranie;
  • pause – zatrzymuje wykonywanie do naciśnięcia klawisza.

Krok 3 – zapisz plik jako .bat. W Notatniku wykonaj:

  1. Plik → Zapisz jako;
  2. Typ pliku: Wszystkie pliki;
  3. Nazwa, np. backup_xcopy.bat (koniecznie z rozszerzeniem .bat);
  4. Zapisz w wybranym folderze.

Nie zapisuj jako .txt – system nie potraktuje pliku jako skryptu.

Krok 4 – uruchom plik wsadowy. Kliknij plik .bat dwukrotnie w Eksploratorze, aby wykonać komendy. Możesz też uruchomić go z poziomu cmd, wpisując nazwę pliku.

Najważniejsze przełączniki XCOPY w praktyce

Poniżej zestaw najczęściej używanych opcji XCOPY, praktycznych przy tworzeniu skryptów kopii zapasowych:

Przełącznik Co robi (w skrócie) Zastosowanie
/E Kopiuje wszystkie podkatalogi, włącznie z pustymi. Pełne drzewo katalogów, także przy pustych folderach.
/I Gdy niejasne, czy celem jest plik czy folder, przyjmuje folder i tworzy go, jeśli nie istnieje. Skrypty, w których docelowy folder może nie istnieć.
/Y Nie pyta o potwierdzenie nadpisania plików w miejscu docelowym. Skrypty bez nadzoru (harmonogram zadań, backup nocny).
/S Kopiuje podkatalogi, ale bez pustych. Gdy nie chcesz kopiować pustych katalogów.
/H Kopiuje także pliki ukryte i systemowe. Kopia pełna – folder wygląda identycznie jak źródło.
/C Kontynuuje kopiowanie nawet po napotkaniu błędów. Przy dużych kopiach, gdy pojedynczy błąd nie ma zatrzymać operacji.
/R Nadpisuje pliki tylko do odczytu w miejscu docelowym. Odświeżanie backupu mimo atrybutu „tylko do odczytu”.
/K Zachowuje atrybuty plików (np. „tylko do odczytu”). Kopie lustrzane z zachowaniem atrybutów.
/O Kopiuje informacje o właścicielu i listy ACL (uprawnienia NTFS). Przenoszenie danych między wolumenami NTFS z zachowaniem zabezpieczeń.
/X Kopiuje dodatkowe ustawienia uprawnień (np. audyt, SACL). Migracje danych, gdzie istotne są wszystkie aspekty bezpieczeństwa.
/T Tworzy strukturę katalogów bez plików. Gdy chcesz skopiować tylko układ folderów (np. szablon).

Przykład 1 – prosty skrypt kopii zapasowej z XCOPY

Załóżmy, że chcesz codziennie tworzyć kopię folderu C:\Projekty na dysku zewnętrznym D:\Backup. Utwórz plik wsadowy z poniższymi wierszami:

  1. @echo off
  2. echo Tworzenie kopii zapasowej folderu Projekty...
  3. xcopy "C:\Projekty" "D:\Backup\Projekty" /E /I /Y
  4. echo Kopia zapasowa zostala wykonana.
  5. pause

Co tu się dzieje:

  • „C:\Projekty” – folder źródłowy, czyli to, co kopiujemy;
  • „D:\Backup\Projekty” – folder docelowy, czyli miejsce kopii;
  • /E – kopiujemy wszystkie podkatalogi, w tym puste;
  • /I – jeśli folder docelowy nie istnieje, XCOPY potraktuje cel jako folder i go utworzy;
  • /Y – nie będzie pytał, czy nadpisać istniejące pliki.

To klasyczny, skuteczny schemat na szybki backup całego folderu.

Przykład 2 – kopia pełna z logiem działań

Dla poważniejszych zastosowań warto uwzględnić pliki ukryte i systemowe oraz zapisywać log z przebiegu operacji, aby w razie problemów sprawdzić, co się stało.

Utwórz plik wsadowy z tymi wierszami:

  1. @echo off
  2. setlocal
  3. rem Ustawienie datownika w nazwie pliku logu (wersja uproszczona)
  4. set LOGFILE=D:\Backup\log_xcopy.txt
  5. echo [%date% %time%] Rozpoczynam kopie folderu Dane >> "%LOGFILE%"
  6. xcopy "C:\Dane" "D:\Backup\Dane" /E /H /C /I /Y >> "%LOGFILE%"
  7. if errorlevel 1 (
  8. echo [%date% %time%] Wystapil blad podczas kopiowania. Kod: %errorlevel% >> "%LOGFILE%"
  9. ) else (
  10. echo [%date% %time%] Kopia zakonczona pomyslnie. >> "%LOGFILE%"
  11. )
  12. endlocal
  13. pause

Co warto zauważyć:

  • /H – kopiujemy także pliki ukryte i systemowe;
  • /C – kontynuujemy kopiowanie mimo potencjalnych błędów;
  • >> „%LOGFILE%” – przekierowanie wyniku działania polecenia do pliku logu;
  • errorlevel – standardowa zmienna informująca o kodzie błędu polecenia.

Taki skrypt warto dodać do Harmonogramu zadań, aby backup wykonywał się automatycznie.

Automatyzacja uruchamiania skryptu (harmonogram zadań)

Aby plik wsadowy wykonywał się automatycznie (np. codziennie o 2:00), skorzystaj z Harmonogramu zadań i wykonaj następujące kroki:

  1. Otwórz „Harmonogram zadań” z menu Start.
  2. W panelu „Akcje” wybierz Utwórz zadanie podstawowe.
  3. Nadaj nazwę (np. BackupProjekty) i opcjonalny opis.
  4. Wybierz Wyzwalacz – np. Codziennie lub Przy uruchomieniu systemu.
  5. Ustaw godzinę i częstotliwość.
  6. W sekcji „Akcja” wskaż uruchomienie programu i jako program wybierz swój plik backup_xcopy.bat.

Dobre praktyki przy pisaniu skryptów z XCOPY

Aby twoje skrypty były bezpieczne, czytelne i ponadczasowe, stosuj poniższe zasady:

  • Testuj na małych danych – zanim uruchomisz skrypt na ważnych plikach, sprawdź go na kopii roboczej;
  • Używaj pełnych ścieżek – zamiast xcopy Dane Backup używaj "C:\Dane" i "D:\Backup", aby uniknąć nieporozumień związanych z bieżącym katalogiem;
  • Dodawaj komentarze (rem) – opisz, co robi dana sekcja; po miesiącach to bezcenne dla ciebie i innych;
  • Dobieraj przełączniki świadomie – kilka praktycznych wskazówek:
    • jeśli chcesz pełną kopię – używaj /E i /H,
    • jeśli kopiujesz w tle – dodaj /Y,
    • jeśli przenosisz dane między wolumenami NTFS – użyj /O /X /E /H /K.
  • Dbaj o logowanie – przy rozbudowanych kopiach zawsze zapisuj log, przekierowując wyjście (np. >> log.txt).

Najczęstsze błędy początkujących

Unikaj poniższych potknięć – to najczęstsze źródła problemów w pracy z plikami wsadowymi i XCOPY:

  • zapis pliku jako .txt zamiast .bat – plik nie uruchomi się jako skrypt; zapisz jako „Wszystkie pliki” z rozszerzeniem .bat;
  • brak cudzysłowów przy ścieżkach z odstępamiC:\Moje dokumenty bez cudzysłowów spowoduje błędy; używaj "C:\Moje dokumenty";
  • brak /I przy tworzeniu nowego folderu docelowego – bez tego XCOPY może pytać, czy celem jest plik czy folder, zamiast działać automatycznie;
  • niewłaściwe użycie /Y – bez tego skrypt może czekać na potwierdzenie przed nadpisaniem plików;
  • uruchamianie bez odpowiednich uprawnień – kopiowanie plików systemowych lub do folderów chronionych może wymagać trybu administratora.