Plik wsadowy

Z Wikipedii, wolnej encyklopedii
(Przekierowano z Program wsadowy)
Plik wsadowy, plik bat, batch file
Rozszerzenia pliku

.bat, .cmd, .btm

Producent

Microsoft

Typ

język skryptowy

Plik wsadowy, plik bat (ang. batch file) – rodzaj skryptów głównie w systemach DOS i Windows, zapisywane jako pliki z rozszerzeniem „.bat” oraz „.cmd”. Pliki te wykonywane są poprzez odpowiedni interpreter poleceń – początkowo przez command.com, a od Windows NT przez cmd.exe.

Skrypty i tryb wsadowy[edytuj | edytuj kod]

 Osobny artykuł: Tryb wsadowy.

Program komputerowy wykonywany w trybie wsadowym to program wykonywany bez wpływu użytkownika na przebieg programu (bez interakcji). Pliki wsadowe w systemach Microsoftu, chociaż mogą zostać wykonane w trybie wsadowym, to sam język umożliwia uruchamianie programów, które umożliwiają interakcję z użytkownikiem[1].

Zastosowanie i ograniczenia[edytuj | edytuj kod]

Pliki wsadowe nie wymagają interfejsu graficznego i są uruchamiane w trybie tekstowym, albo z wiersza poleceń trybu graficznego. W systemie Windows mogą być także uruchamiane z wiersza poleceń zredukowanego do okna Uruchom w menu Start lub eksploratora Windows przez uruchomienie pliku.

Wynik działania programu wsadowego może być zapisany do pliku, wyprowadzony (wyświetlony) na ekran, może być wprowadzony jako zmiana w rejestrze systemu Windows lub przekazany do innego programu przy przetwarzaniu potokowym. Pliki wsadowe mogą ułatwiać zautomatyzowanie niektórych zadań. Takimi zadaniami jest np. wykonywanie powtarzających się zadań administratora systemu, czy wykonywanie zadań w harmonogramie zadań(inne języki)[2].

Interpreter cmd.exe (który jest odpowiedzialny za wykonywanie skryptów .BAT) otwiera plik ze skryptem, odczytuje, zapamiętuję pozycję, zamyka plik i wykonuje polecenie. Tak może się dziać nawet dla każdej kolejnej linii skryptu (z wyjątkiem wyrażeń w nawiasach) i może to powodować dziwne efekty jeśli plik wsadowy zmieni się w trakcie wykonywania poleceń. Takie zachowanie jest również nieefektywne jeśli dostęp do dysku ze skryptem jest wąskim gardłem[3][4][5].

Przykłady[edytuj | edytuj kod]

Przykładowe polecenia plików wsadowych[edytuj | edytuj kod]

Przykładowe komendy wsadowe, będące poleceniami powłoki systemowej systemu MS-DOS i Microsoft Windows:

  • ECHO – wyświetlanie tekstu na ekranie,
  • SET – tworzenie zmiennej bądź modyfikacja istniejącej,
  • CLS – wyczyszczenie zawartości na ekranie,
  • COPY – kopiowanie pliku,
  • DEL – usuwanie pliku,
  • RMDIR – usuwanie katalogu,
  • MKDIR – tworzenie katalogu,
  • DIR – wyświetlanie listy plików i katalogów,
  • TYPE – wyświetlanie zawartości pliku,
  • CLS – czyszczenie okna konsoli,
  • REM – dodanie jednowierszowego komentarza.

Na stronie internetowej Microsoftu można znaleźć dokumentację wszystkich poleceń w systemach Windows Server[6].

Przykładowe pliki wsadowe[edytuj | edytuj kod]

Przykładowy program wsadowy systemu MS-DOS lub Windows, w tym przykładzie wyświetlający napis „Hello World”, wygląda następująco:

@echo off
echo Hello World
pause

Przykładowy skrypt proszący o podanie imienia i wypisujący stosowny komunikat wraz z komentarzem:

@echo off
set /p imie=Jak masz na imię?
rem To jest komentarz i nie ma wpływu na działanie programu
echo Witaj, %imie%.
pause

i wynik jego działania:

Jak masz na imię? Michał
Witaj, Michał.
Aby kontynuować, naciśnij dowolny klawisz . . .

Przykład ten demonstruje możliwość pobierania danych od użytkownika nie tylko poprzez parametry, ale także w czasie trwania wykonywania skryptu. Możliwość taka istnieje w Windows NT. Przykładowy skrypt tworzący folder o nazwie „test”, a następnie usuwający go.

@echo off
mkdir test
rmdir test
exit

Implementacje[edytuj | edytuj kod]

Interpreterem komend (powłoką systemową) w systemach MS-DOS i Windows z rodziny 9x jest program command.com[3]. W późniejszych systemach Windows z linii NT (Windows NT, 2000, XP, 2003, Vista itd.) interpreterem jest cmd.exe[7]. W nowych wersjach systemu Windows co prawda aplikacja konsoli, to conhost.exe, ale cmd.exe pozostało tym, co uruchamiają użytkownicy, aby przejść do klasycznego wiersza poleceń w systemach Microsoft Windows[7][8][9].

Program 4DOS firmy JP Software umożliwiał wykonywanie plików wsadowych z Windowsa, ale również wprowadziło swoje rozszerzenia. W szczególności wprowadzili pliki z rozszerzeniem „.btm” (z ang. batch to memory), które ładowały cały plik do pamięci, co miało przyśpieszać pracę takich skryptów[3].

Wsparcie dla plików wsadowych pojawiło się również w OS/2, który firma IBM tworzyła z Microsoftem[3][10][11]. Natomiast bardziej niezależna implementacja pojawiła się w ReactOS[12].

Zobacz też[edytuj | edytuj kod]

Przypisy[edytuj | edytuj kod]

  1. Programowanie wsadowe DOS/Windows, www.ee.pw.edu.pl [dostęp 2023-08-05] (pol.).
  2. Mauro Huculak, How to create and run a batch file on Windows 10, Windows Central, 2 lutego 2022 [dostęp 2023-08-05] (ang.).
  3. a b c d Robin M. Snyder, Using 4DOS Batch Files To Create an Infrastructure That Makes It Easy for Students To Create and Maintain HTML Web Pages, 1998 [dostęp 2023-08-05] (ang.).
  4. Types of Opportunistic Locks - Win32 apps, learn.microsoft.com, 7 stycznia 2021 [dostęp 2023-08-06] (ang.).
  5. Skrypty .BAT i programowanie obiektowe, gynvael.coldwind.pl [dostęp 2023-07-14].
  6. Commands by Server role, learn.microsoft.com, 29 lipca 2021 [dostęp 2023-08-03] (ang.).
  7. a b Windows Developer Blog, Adam Denning, Console Improvements in the Windows 10 Technical Preview, Windows Developer Blog, 7 października 2014 [dostęp 2023-08-05] (ang.).
  8. Windows Command-Line: Inside the Windows Console, Windows Command Line, 20 lipca 2018 [dostęp 2020-09-13] (ang.).
  9. Windows Terminal FAQ, learn.microsoft.com [dostęp 2023-08-05] (ang.).
  10. JaTomes Help - OS/2 Batch File Commands, web.archive.org, 14 kwietnia 2019 [dostęp 2023-08-05] [zarchiwizowane z adresu 2019-04-14].
  11. Ed Iacobucci, co-founder of Citrix, dies of cancer, ZDNET [dostęp 2023-08-05] (ang.).
  12. reactos/base/shell/cmd/cmd.c at master · reactos/reactos, GitHub [dostęp 2023-08-05] (ang.).

Linki zewnętrzne[edytuj | edytuj kod]