Powłoka poleceń jest oddzielnym programem umożliwiającym bezpośrednią komunikację między użytkownikiem a systemem operacyjnym. Interfejs użytkownika powłoki poleceń nie funkcjonuje w trybie graficznym i zapewnia środowisko, w którym są uruchamiane aplikacje i narzędzia działające w trybie tekstowym. Powłoka poleceń wykonuje programy i powoduje wyświetlanie danych wyjściowych na ekranie przy użyciu pojedynczych znaków, podobnie jak Command.com — interpreter poleceń podsystemu MS-DOS. Powłoka poleceń systemu operacyjnego serwera Windows używa interpretera poleceń Cmd.exe, który ładuje aplikacje i kieruje przepływem informacji między nimi w celu przekształcenia danych wejściowych użytkownika na formę zrozumiałą dla systemu operacyjnego.
Za pomocą powłoki poleceń można tworzyć i edytować pliki wsadowe (nazywane również skryptami) w celu zautomatyzowania rutynowych zadań. Na przykład można używać skryptów do automatyzowania zarządzania kontami użytkowników lub wykonywania kopii zapasowych w godzinach nocnych. Można również korzystać z wersji hosta skryptów systemu Windows przeznaczonej dla wiersza polecenia (CScript) w celu uruchomienia w powłoce poleceń bardziej zaawansowanych skryptów. Aby uzyskać więcej informacji, zobacz Uruchamianie Hosta skryptów systemu Windows. Przy użyciu plików wsadowych można efektywniej wykonywać operacje niż za pomocą interfejsu użytkownika. Pliki wsadowe akceptują wszystkie polecenia dostępne w wierszu polecenia. Aby uzyskać więcej informacji na temat plików wsadowych i skryptów, zobacz Korzystanie z plików wsadowych.
Można dostosować okno wiersza polecenia, aby ułatwić przeglądanie i precyzyjnie kontrolować sposób uruchamiania programów. Aby uzyskać więcej informacji o dostosowywaniu okna wiersza polecenia, zobacz Konfigurowanie wiersza polecenia.
Korzystanie ze składni poleceń
Elementy składni – polecenia i parametry – należy wpisywać w określonej kolejności. Poniższy przykład polecenia xcopy przedstawia różnorodność formatów tekstu składni:
xcopylokalizacja_źródłowa [lokalizacja_docelowa] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-rrrr]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a | /m}] [/n] [/o] [/x] [/exclude:plik1[+[plik2]][+[plik3]] [{/y | /-y}] [/z]
Następująca tabela objaśnia sposób interpretowania różnych formatów tekstu.
Legenda formatowania
| Format | Znaczenie |
|---|
Kursywa | Informacje, które musi podać użytkownik |
Pogrubienie | Elementy, które użytkownik musi wpisać dokładnie tak jak pokazano |
W nawiasie okrągłym (...) | Parametry, które mogą się kilka razy powtórzyć w wierszu polecenia |
W nawiasie kwadratowym ([]) | Elementy opcjonalne |
W nawiasie klamrowym ({}); opcje oddzielone znakiem potoku (|). Przykład: {even|odd} | Zestaw opcji, z których użytkownik musi wybrać tylko jedną |
Czcionka Courier | Kod lub wynik działania programu |
Korzystanie z wielu poleceń i symboli przetwarzania warunkowego
Korzystając z symboli przetwarzania warunkowego, można wykonywać wiele poleceń z pojedynczego wiersza polecenia lub skryptu. Po uruchomieniu wielu poleceń przy użyciu symboli przetwarzania warunkowego, polecenia po prawej stronie symbolu przetwarzania warunkowego działają zgodnie z wynikami polecenia znajdującego się po lewej stronie symbolu przetwarzania warunkowego. Na przykład może być konieczne wykonanie polecenia tylko wtedy, gdy poprzednie polecenie zawiedzie lub zostanie wykonane pomyślnie.
Za pomocą znaków specjalnych wymienionych w poniższej tabeli można przekazywać wiele poleceń.
| Znak | Składnia | Definicja |
|---|
& [...] | polecenie1 &polecenie2 | Służy do oddzielania wielu poleceń w pojedynczym wierszu polecenia. Program Cmd.exe wykonuje pierwsze polecenie, a następnie drugie polecenie. |
&& [...] | polecenie1 &&polecenie2 | Służy do wykonywania polecenia następującego po symbolu && tylko wtedy, gdy poprzedzające symbol polecenie wykonano pomyślnie. Program Cmd.exe wykonuje pierwsze polecenie, a następnie wykonuje drugie polecenie, jeśli pierwsze polecenie zostało wykonane pomyślnie. |
|| [...] | polecenie1 || polecenie2 | Służy do wykonywania polecenia następującego po symbolu || tylko wtedy, gdy nie powiedzie się wykonywanie polecenia poprzedzającego symbol ||. Program Cmd.exe wykonuje pierwsze polecenie, a następnie wykonuje drugie polecenie, jeśli pierwsze polecenie nie zostało wykonane pomyślnie (zgłoszony był kod błędu większy od zera). |
( ) [...] | (polecenie1 & polecenie2) | Służy do grupowania lub zagnieżdżania wielu poleceń. |
; lub , | polecenie1 parametr1;parametr2 | Służy do oddzielania parametrów poleceń. |
Uwagi
-
Handlowe „i” (&), potok (|) i nawiasy ( ) to znaki specjalne, które należy poprzedzać symbolem unikowym (^) lub cudzysłowem, jeśli są przekazywane jako argumenty.
-
Polecenie, które pomyślnie wykona operację, zwraca kod zakończenia równy zero (0) lub nie zwraca kodu zakończenia. Aby uzyskać więcej informacji dotyczących kodów zakończenia, zobacz Korzystanie z zestawów Deployment Kit i Resource Kit dla systemu Windows.
Zagnieżdżanie poleceń powłoki
Można zagnieżdżać powłoki poleceń w programie Cmd.exe, otwierając nowe wystąpienie programu Cmd.exe w wierszu polecenia. Domyślnie każde wystąpienie programu Cmd.exe dziedziczy środowisko nadrzędnej aplikacji Cmd.exe. Zagnieżdżając wystąpienia programu Cmd.exe, można wprowadzać zmiany w środowisku lokalnym, nie wpływając na nadrzędną aplikację Cmd.exe. Pozwala to zachować oryginalne środowisko programu Cmd.exe i powrócić do niego po zamknięciu zagnieżdżonej powłoki poleceń. Zmiany wprowadzane w zagnieżdżonej powłoce poleceń nie są zapisywane.
Aby zagnieździć powłokę poleceń, w wierszu polecenia należy wpisać:
cmd
Pojawi się komunikat podobny do następującego:
Microsoft (R) Windows Server 2003, Standard Edition (TM)(C) Copyright 1985-2002 Microsoft Corp.
Aby zamknąć zagnieżdżoną powłokę poleceń, należy wpisać polecenie exit.
Za pomocą poleceń setlocal i endlocal można bardziej precyzyjnie lokalizować zmiany w wystąpieniu programu Cmd.exe (lub w skrypcie). Polecenie setlocal tworzy zakres lokalny, a polecenie endlocal kończy funkcjonowanie zakresu lokalnego. Wszystkie zmiany wprowadzone w zakresie poleceń setlocal i endlocal są odrzucane, a oryginalne środowisko pozostaje bez zmian. Te dwa polecenia można zagnieździć maksymalnie na 32 poziomach. Aby uzyskać więcej informacji na temat poleceń setlocal i endlocal, zobacz Polecenie setlocal i Polecenie endlocal.
Korzystanie ze zmiennych środowiskowych w programie Cmd.exe
Środowisko powłoki poleceń programu Cmd.exe jest definiowane przez zmienne określające zachowanie powłoki poleceń i systemu operacyjnego. Można definiować zachowanie środowiska powłoki poleceń lub całego środowiska systemu operacyjnego przy użyciu dwóch typów zmiennych środowiskowych (systemowych i lokalnych). Systemowe zmienne środowiskowe definiują zachowanie globalnego środowiska systemu operacyjnego. Lokalne zmienne środowiskowe definiują zachowanie środowiska bieżącego wystąpienia programu Cmd.exe.
Systemowe zmienne środowiskowe są wstępnie ustawiane w systemie operacyjnym i dostępne dla wszystkich procesów serwerowego systemu operacyjnego Windows. Mogą je zmieniać tylko użytkownicy z poświadczeniami administracyjnymi. Te zmienne są najczęściej używane w skryptach logowania.
Lokalne zmienne środowiskowe są dostępne tylko wtedy, gdy użytkownik, dla którego zostały utworzone, jest zalogowany na komputerze. Zmienne lokalne ustawione w gałęzi HKEY_CURRENT_USER obowiązują tylko w przypadku bieżącego użytkownika, ale definiują zachowanie globalnego środowiska systemu operacyjnego.
Poniższa lista opisuje różne typy zmiennych zgodnie z malejącą kolejnością pierwszeństwa:
-
Wbudowane zmienne systemowe.
-
Zmienne systemowe w gałęzi HKEY_LOCAL_MACHINE.
-
Zmienne lokalne w gałęzi HKEY_CURRENT_USER.
-
Wszystkie zmienne środowiskowe i ścieżki ustawione w pliku Autoexec.bat.
-
Wszystkie zmienne środowiskowe i ścieżki ustawione w skrypcie logowania (jeżeli istnieją).
-
Zmienne używane interakcyjnie w skrypcie lub pliku wsadowym.
W powłoce poleceń każde wystąpienie programu Cmd.exe dziedziczy środowisko aplikacji nadrzędnej. Można więc modyfikować zmienne w nowym środowisku programu Cmd.exe, nie wpływając na środowisko aplikacji nadrzędnej.
Następująca tabela zawiera listę systemowych i lokalnych zmiennych środowiskowych serwerowego systemu operacyjnego Windows.
|
Zmienna
|
Typ
|
Opis
|
|---|
%ALLUSERSPROFILE% | Lokalna | Zwraca lokalizację profilu wszystkich użytkowników. |
%APPDATA% | Lokalna | Zwraca lokalizację, w której aplikacje domyślnie przechowują dane. |
%CD% | Lokalna | Zwraca ciąg bieżącego katalogu. |
%CMDCMDLINE% | Lokalna | Zwraca dokładny wiersz polecenia użyty do uruchomienia bieżącego wystąpienia programu Cmd.exe. |
%CMDEXTVERSION% | Systemowa | Zwraca numer wersji bieżących rozszerzeń procesora poleceń. |
%COMPUTERNAME% | Systemowa | Zwraca nazwę komputera. |
%COMSPEC% | Systemowa | Zwraca dokładną ścieżkę do pliku wykonywalnego powłoki poleceń. |
%DATE% | Systemowa | Zwraca bieżącą datę. Korzysta z tego samego formatu co polecenie date /t. Generowana przez program Cmd.exe. Aby uzyskać więcej informacji o poleceniu date, zobacz Polecenie date. |
%ERRORLEVEL% | Systemowa | Zwraca kod błędu ostatnio używanego polecenia. Wartość różna od zera zazwyczaj oznacza błąd. |
%HOMEDRIVE% | Systemowa | Zwraca literę dysku lokalnej stacji roboczej połączoną z katalogiem macierzystym użytkownika. Jest ustawiana na podstawie wartości katalogu macierzystego. Katalog macierzysty użytkownika jest określany w przystawce Użytkownicy i grupy lokalne. |
%HOMEPATH% | Systemowa | Zwraca pełną ścieżkę katalogu macierzystego użytkownika. Jest ustawiana na podstawie wartości katalogu macierzystego. Katalog macierzysty użytkownika jest określany w przystawce Użytkownicy i grupy lokalne. |
%HOMESHARE% | Systemowa | Zwraca ścieżkę sieciową udostępnionego katalogu macierzystego użytkownika. Jest ustawiana na podstawie wartości katalogu macierzystego. Katalog macierzysty użytkownika jest określany w przystawce Użytkownicy i grupy lokalne. |
%LOGONSERVER% | Lokalna | Zwraca nazwę kontrolera domeny weryfikującego bieżącą sesję logowania. |
%NUMBER_OF_PROCESSORS% | Systemowa | Określa liczbę procesorów zainstalowanych w komputerze. |
%OS% | Systemowa | Zwraca nazwę systemu operacyjnego. W systemie Windows 2000 nazwa systemu operacyjnego jest wyświetlana jako Windows NT. |
%PATH% | Systemowa | Określa ścieżkę wyszukiwania plików wykonywalnych. |
%PATHEXT% | Systemowa | Zwraca listę rozszerzeń nazw plików rozpoznawanych jako wykonywalne przez system operacyjny. |
%PROCESSOR_ARCHITECTURE% | Systemowa | Zwraca architekturę mikroukładu procesora. Wartości: x86 lub IA64 (procesor Itanium). |
%PROCESSOR_IDENTFIER% | Systemowa | Zwraca opis procesora. |
%PROCESSOR_LEVEL% | Systemowa | Zwraca numer modelu procesora zainstalowanego w komputerze. |
%PROCESSOR_REVISION% | Systemowa | Zwraca numer wersji procesora. |
%PROMPT% | Lokalna | Zwraca ustawienia wiersza polecenia bieżącego interpretera. Jest generowana przez program Cmd.exe. |
%RANDOM% | Systemowa | Zwraca losowy numer dziesiętny z zakresu od 0 do 32 767. Jest generowana przez program Cmd.exe. |
%SYSTEMDRIVE% | Systemowa | Zwraca dysk zawierający katalog główny systemu operacyjnego Windows Server (tzn. główny katalog systemowy). |
%SYSTEMROOT% | Systemowa | Zwraca lokalizację katalogu głównego systemu operacyjnego Windows Server. |
%TEMP% i %TMP% | Systemowa i użytkownika | Zwraca domyślne katalogi tymczasowe używane przez aplikacje dostępne dla użytkowników, którzy są aktualnie zalogowani. Niektóre aplikacje wymagają katalogu TEMP, a inne katalogu TMP. |
%TIME% | Systemowa | Zwraca bieżącą godzinę. Korzysta z tego samego formatu co polecenie time /t. Jest generowana przez program Cmd.exe. Aby uzyskać więcej informacji o poleceniu time, zobacz Polecenie time. |
%USERDOMAIN% | Lokalna | Zwraca nazwę domeny zawierającej konto użytkownika. |
%USERNAME% | Lokalna | Zwraca nazwę aktualnie zalogowanego użytkownika. |
%USERPROFILE% | Lokalna | Zwraca lokalizację profilu bieżącego użytkownika. |
%WINDIR% | Systemowa | Zwraca lokalizację katalogu systemu operacyjnego. |
Ustawianie zmiennych środowiskowych
Za pomocą polecenia set można tworzyć, zmieniać, usuwać lub wyświetlać zmienne środowiskowe. Polecenie set modyfikuje tylko zmienne w bieżącym środowisku powłoki.
Aby przejrzeć zmienną, w wierszu polecenia należy wpisać:
setnazwa_zmiennej
Aby dodać zmienną, w wierszu polecenia należy wpisać:
setnazwa_zmiennej=wartość
Aby usunąć zmienną, w wierszu polecenia należy wpisać:
setnazwa_zmiennej=
Jako wartości zmiennych można używać większości znaków, łącznie ze spacjami. Stosowane znaki specjalne <, >, |, & lub ^ należy poprzedzać symbolem unikowym (^) lub cudzysłowem. Używany cudzysłów jest dołączany jako część wartości, ponieważ wszystkie elementy występujące po znaku równości są traktowane jako wartość. Poniżej podano przykłady:
-
Aby utworzyć wartość zmiennej nowa&nazwa, należy wpisać:
set varname=nowa^&nazwa
-
Aby utworzyć wartość zmiennej "nowa&nazwa", należy wpisać:
set varname="nowa&nazwa"
-
Jeżeli w wierszu polecenia wpisano set varname=nowa&nazwa, pojawi się komunikat o błędzie podobny do następującego:
"'Nazwa' nie została rozpoznana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy."
W nazwach zmiennych nie jest uwzględniana wielkość liter. Polecenie set spowoduje jednak wyświetlenie zmiennej dokładnie tak, jak ją wpisano. W nazwach zmiennych można więc łączyć wielkie i małe litery, aby zwiększyć czytelność kodu (na przykład NazwaUżytkownika).
Uwagi
-
Maksymalny rozmiar pojedynczej zmiennej środowiskowej wynosi 8192 bajty.
-
Maksymalny całkowity rozmiar wszystkich zmiennych środowiskowych, łącznie z nazwami zmiennych i znakiem równości, wynosi 65 536 KB.
Podstawianie wartości zmiennych środowiskowych
Aby włączyć podstawianie wartości zmiennych w wierszu polecenia lub w skryptach, należy wpisać nazwę zmiennej między znakami procentu (tzn. %nazwa_zmiennej%). Dzięki zastosowaniu znaków procentu można mieć pewność, że program Cmd.exe odwoła się do wartości zmiennej, a nie wykona dosłownego porównania. Po zdefiniowaniu wartości zmiennej dla nazwy zmiennej, należy wpisać nazwę zmiennej między znakami procentu. Program Cmd.exe wyszukuje wszystkie wystąpienia nazwy zmiennej i zastępuje je zdefiniowaną wartością zmiennej. Na przykład jeżeli utworzono skrypt zawierający różne wartości (na przykład nazwy użytkowników) i trzeba zdefiniować zmienną środowiskową USERNAME dla poszczególnych użytkowników zgodnie z tymi wartościami, można napisać skrypt zawierający zmienną USERNAME wpisaną między znakami procentu. Po uruchomieniu tego skryptu program Cmd.exe zamienia wpis %USERNAME% na wartości zmiennej, więc nie trzeba ręcznie wykonywać tego zadania dla poszczególnych użytkowników. Podstawianie zmiennych nie jest cykliczne. Program Cmd.exe sprawdza zmienne tylko jeden raz. Aby uzyskać więcej informacji o podstawianiu zmiennych, zobacz Polecenie for i Polecenie call.