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:
@echo offecho Witaj w moim pierwszym pliku wsadowym!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:
- Plik → Zapisz jako;
- Typ pliku: Wszystkie pliki;
- Nazwa, np.
backup_xcopy.bat(koniecznie z rozszerzeniem.bat); - 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:
@echo offecho Tworzenie kopii zapasowej folderu Projekty...xcopy "C:\Projekty" "D:\Backup\Projekty" /E /I /Yecho Kopia zapasowa zostala wykonana.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:
@echo offsetlocalrem Ustawienie datownika w nazwie pliku logu (wersja uproszczona)set LOGFILE=D:\Backup\log_xcopy.txtecho [%date% %time%] Rozpoczynam kopie folderu Dane >> "%LOGFILE%"xcopy "C:\Dane" "D:\Backup\Dane" /E /H /C /I /Y >> "%LOGFILE%"if errorlevel 1 (echo [%date% %time%] Wystapil blad podczas kopiowania. Kod: %errorlevel% >> "%LOGFILE%") else (echo [%date% %time%] Kopia zakonczona pomyslnie. >> "%LOGFILE%")endlocalpause
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:
- Otwórz „Harmonogram zadań” z menu Start.
- W panelu „Akcje” wybierz Utwórz zadanie podstawowe.
- Nadaj nazwę (np.
BackupProjekty) i opcjonalny opis. - Wybierz Wyzwalacz – np. Codziennie lub Przy uruchomieniu systemu.
- Ustaw godzinę i częstotliwość.
- 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 Backupuż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
/Ei/H, - jeśli kopiujesz w tle – dodaj
/Y, - jeśli przenosisz dane między wolumenami NTFS – użyj
/O /X /E /H /K.
- jeśli chcesz pełną kopię – używaj
- 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
.txtzamiast.bat– plik nie uruchomi się jako skrypt; zapisz jako „Wszystkie pliki” z rozszerzeniem.bat; - brak cudzysłowów przy ścieżkach z odstępami –
C:\Moje dokumentybez cudzysłowów spowoduje błędy; używaj"C:\Moje dokumenty"; - brak
/Iprzy 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.






