Skrypt wsadowy - szybki przewodnik
Skrypt wsadowy służy do automatyzacji sekwencji poleceń, które mają charakter powtarzalny. Skrypty to sposób, w jaki można złagodzić tę konieczność, automatyzując te sekwencje poleceń, aby uczynić życie w powłoce łatwiejszym i bardziej produktywnym. W większości organizacji Batch Script jest w jakiś sposób stosowany w celu automatyzacji rzeczy.
Niektóre funkcje Batch Script to -
Może odczytywać dane wejściowe od użytkowników, aby można je było dalej przetwarzać.
Posiada struktury kontrolne, takie jak przełącznik for, if, while, dla lepszej automatyzacji i tworzenia skryptów.
Obsługuje zaawansowane funkcje, takie jak funkcje i tablice.
Obsługuje wyrażenia regularne.
Może zawierać inne kody programowania, takie jak Perl.
Niektóre z typowych zastosowań Batch Script to -
Konfigurowanie serwerów do różnych celów.
Automatyzacja czynności porządkowych, takich jak usuwanie niechcianych plików lub plików dziennika.
Automatyzacja wdrażania aplikacji z jednego środowiska do drugiego.
Instalowanie programów na różnych komputerach jednocześnie.
Skrypty wsadowe są przechowywane w prostych plikach tekstowych zawierających wiersze z poleceniami, które są wykonywane w kolejności, jedna po drugiej. Pliki te mają specjalne rozszerzenie BAT lub CMD. Pliki tego typu są rozpoznawane i wykonywane przez interfejs (czasami nazywany powłoką) udostępniany przez plik systemowy zwany interpretatorem poleceń. W systemach Windows ten interpreter jest znany jako cmd.exe.
Uruchomienie pliku wsadowego jest prostą sprawą kliknięcia go. Pliki wsadowe można również uruchamiać w wierszu polecenia lub w wierszu Start-Uruchom. W takim przypadku należy użyć pełnej nazwy ścieżki, chyba że ścieżka pliku znajduje się w środowisku ścieżki. Poniżej znajduje się prosty przykład skryptu wsadowego. Ten skrypt wsadowy po uruchomieniu usuwa wszystkie pliki w bieżącym katalogu.
:: Deletes All files in the Current Directory With Prompts and Warnings
::(Hidden, System, and Read-Only Files are Not Affected)
:: @ECHO OFF
DEL . DR
W tym rozdziale opisano środowisko związane ze skryptem wsadowym.
Pisanie i wykonywanie
Zwykle do tworzenia pliku wsadowego używa się notatnika. To najprostsze narzędzie do tworzenia plików wsadowych. Dalej jest środowisko wykonawcze skryptów wsadowych. W systemach Windows odbywa się to za pomocą wiersza poleceń lub cmd.exe. Wszystkie pliki wsadowe są uruchamiane w tym środowisku.
Poniżej przedstawiono różne sposoby uruchamiania cmd.exe -
Method 1 - Przejdź do C: \ Windows \ System32 i kliknij dwukrotnie plik cmd.
Method 2 - Za pomocą polecenia uruchomienia - Poniższa migawka pokazuje, aby znaleźć wiersz polecenia (cmd.exe) na serwerze Windows 2012.
Po uruchomieniu cmd.exe zostanie wyświetlony następujący ekran. To będzie twoje środowisko do wykonywania skryptów wsadowych.
Zmienne środowiska
Aby uruchomić pliki wsadowe z wiersza polecenia, musisz albo przejść do lokalizacji, w której jest przechowywany plik wsadowy, albo możesz wprowadzić lokalizację pliku w zmiennej środowiskowej ścieżki. Zakładając zatem, że plik wsadowy jest przechowywany w tej lokalizacji C:\Application\bin
, należy postępować zgodnie z tymi instrukcjami, aby dołączyć zmienną PATH.
OS | Wynik |
---|---|
Windows | Dołącz ciąg; C:\Application\bin na końcu zmiennej systemowej PATH. |
W tym rozdziale przyjrzymy się niektórym z często używanych poleceń wsadowych.
S.Nr | Polecenia i opis |
---|---|
1 | VER To polecenie wsadowe pokazuje używaną wersję MS-DOS. |
2 | ASSOC Jest to polecenie wsadowe, które wiąże rozszerzenie z typem pliku (FTYPE), wyświetla istniejące skojarzenia lub usuwa skojarzenie. |
3 | Płyta CD To polecenie wsadowe pomaga w dokonywaniu zmian w innym katalogu lub wyświetla bieżący katalog. |
4 | CLS To polecenie wsadowe czyści ekran. |
5 | KOPIUJ To polecenie wsadowe służy do kopiowania plików z jednej lokalizacji do drugiej. |
6 | DEL To polecenie wsadowe usuwa pliki, a nie katalogi. |
7 | DIR To polecenie wsadowe wyświetla zawartość katalogu. |
8 | DATA To polecenie wsadowe pomaga znaleźć datę systemową. |
9 | ECHO To polecenie wsadowe wyświetla komunikaty lub włącza lub wyłącza echo poleceń. |
10 | WYJŚCIE To polecenie wsadowe zamyka konsolę DOS. |
11 | MD To polecenie wsadowe tworzy nowy katalog w bieżącej lokalizacji. |
12 | RUSZAJ SIĘ To polecenie wsadowe przenosi pliki lub katalogi między katalogami. |
13 | ŚCIEŻKA To polecenie wsadowe wyświetla lub ustawia zmienną ścieżki. |
14 | PAUZA To polecenie wsadowe monituje użytkownika i czeka na wprowadzenie wiersza danych wejściowych. |
15 | SKŁONIĆ Za pomocą tego polecenia wsadowego można zmienić lub zresetować monit cmd.exe. |
16 | R & D To polecenie wsadowe usuwa katalogi, ale katalogi muszą być puste, zanim będzie można je usunąć. |
17 | REN Zmienia nazwy plików i katalogów |
18 | REM To polecenie wsadowe jest używane do uwag w plikach wsadowych, uniemożliwiając wykonanie treści uwagi. |
19 | POCZĄTEK To polecenie wsadowe uruchamia program w nowym oknie lub otwiera dokument. |
20 | CZAS To polecenie wsadowe ustawia lub wyświetla czas. |
21 | RODZAJ To polecenie wsadowe drukuje zawartość pliku lub plików na wyjściu. |
22 | VOL To polecenie wsadowe wyświetla etykiety woluminów. |
23 | ATTRIB Wyświetla lub ustawia atrybuty plików w katalogu bieżącym |
24 | CHKDSK To polecenie wsadowe sprawdza dysk pod kątem problemów. |
25 | WYBÓR To polecenie wsadowe udostępnia użytkownikowi listę opcji. |
26 | CMD To polecenie wsadowe wywołuje inne wystąpienie wiersza polecenia. |
27 | COMP To polecenie wsadowe porównuje 2 pliki na podstawie rozmiaru pliku. |
28 | KONWERTOWAĆ To polecenie wsadowe konwertuje wolumin z systemu plików FAT16 lub FAT32 na system plików NTFS. |
29 | KIEROWCY To polecenie wsadowe pokazuje wszystkie zainstalowane sterowniki urządzeń i ich właściwości. |
30 | ROZSZERZAĆ To polecenie wsadowe wyodrębnia pliki ze skompresowanych plików cab .cab. |
31 | ODNALEŹĆ To polecenie wsadowe wyszukuje ciąg w plikach lub danych wejściowych, wyświetlając pasujące wiersze. |
32 | FORMAT To polecenie wsadowe formatuje dysk tak, aby używał systemu plików obsługiwanego przez Windows, takiego jak FAT, FAT32 lub NTFS, nadpisując w ten sposób poprzednią zawartość dysku. |
33 | WSPARCIE To polecenie wsadowe wyświetla listę poleceń dostarczonych przez system Windows. |
34 | IPCONFIG To polecenie wsadowe wyświetla konfigurację IP systemu Windows. Pokazuje konfigurację według połączenia i nazwę tego połączenia. |
35 | ETYKIETA To polecenie wsadowe dodaje, ustawia lub usuwa etykietę dysku. |
36 | WIĘCEJ To polecenie wsadowe wyświetla zawartość pliku lub plików, jeden ekran na raz. |
37 | NETTO Zapewnia różne usługi sieciowe w zależności od użytego polecenia. |
38 | ŚWIST To polecenie wsadowe wysyła pakiety ICMP / IP „echo” przez sieć na wyznaczony adres. |
39 | ZAMKNĄĆ To polecenie wsadowe wyłącza komputer lub wylogowuje bieżącego użytkownika. |
40 | SORTOWAĆ To polecenie wsadowe pobiera dane wejściowe z pliku źródłowego i sortuje jego zawartość alfabetycznie, od A do Z lub Z do A. Wyświetla wynik na konsoli. |
41 | SUBST To polecenie wsadowe przypisuje literę dysku do folderu lokalnego, wyświetla bieżące przydziały lub usuwa przydział. |
42 | INFORMACJA O SYSTEMIE To polecenie wsadowe pokazuje konfigurację komputera i jego systemu operacyjnego. |
43 | TASKKILL To polecenie wsadowe kończy jedno lub więcej zadań. |
44 | LISTA ZADAŃ To polecenie wsadowe wyświetla listę zadań, w tym nazwę zadania i identyfikator procesu (PID). |
45 | XCOPY To polecenie wsadowe kopiuje pliki i katalogi w bardziej zaawansowany sposób. |
46 | DRZEWO To polecenie wsadowe wyświetla drzewo wszystkich podkatalogów bieżącego katalogu na dowolnym poziomie rekursji lub głębokości. |
47 | FC To polecenie wsadowe wyświetla rzeczywiste różnice między dwoma plikami. |
48 | DISKPART To polecenie wsadowe wyświetla i konfiguruje właściwości partycji dyskowych. |
49 | TYTUŁ To polecenie wsadowe ustawia tytuł wyświetlany w oknie konsoli. |
50 | ZESTAW Wyświetla listę zmiennych środowiskowych w bieżącym systemie. |
W tym rozdziale dowiemy się, jak tworzyć, zapisywać, wykonywać i modyfikować pliki wsadowe.
Tworzenie plików wsadowych
Pliki wsadowe są zwykle tworzone w notatniku. Stąd najprostszym sposobem jest otwarcie notatnika i wprowadzenie poleceń wymaganych dla skryptu. W tym ćwiczeniu otwórz notatnik i wprowadź następujące oświadczenia.
:: Deletes All files in the Current Directory With Prompts and Warnings
::(Hidden, System, and Read-Only Files are Not Affected)
::
@ECHO OFF
DEL .
DR
Zapisywanie plików wsadowych
Po utworzeniu pliku wsadowego następnym krokiem jest zapisanie pliku wsadowego. Pliki wsadowe mają rozszerzenie .bat lub .cmd. Kilka ogólnych zasad, o których należy pamiętać podczas nadawania nazw plikom wsadowym -
Staraj się unikać spacji podczas nazywania plików wsadowych, czasami powoduje to problemy, gdy są wywoływane z innych skryptów.
Nie nazywaj ich na podstawie popularnych plików wsadowych, które są dostępne w systemie, takich jak ping.cmd.
Powyższy zrzut ekranu pokazuje, jak zapisać plik wsadowy. Podczas zapisywania pliku wsadowego należy pamiętać o kilku kwestiach.
- Pamiętaj, aby umieścić .bat lub .cmd na końcu nazwy pliku.
- Wybierz opcję „Zapisz jako typ” jako „Wszystkie pliki”.
- Wpisz całą nazwę pliku w cudzysłów „”.
Wykonywanie plików wsadowych
Poniżej przedstawiono kroki, aby wykonać plik wsadowy -
Step 1 - Otwórz wiersz poleceń (cmd.exe).
Step 2 - Przejdź do lokalizacji, w której przechowywany jest plik .bat lub .cmd.
Step 3 - Wpisz nazwę pliku, jak pokazano na poniższym obrazku, i naciśnij przycisk Enter, aby uruchomić plik wsadowy.
Modyfikowanie plików wsadowych
Poniżej przedstawiono kroki modyfikowania istniejącego pliku wsadowego.
Step 1 - Otwórz przeglądarkę Windows.
Step 2 - Przejdź do lokalizacji, w której przechowywany jest plik .bat lub .cmd.
Step 3- Kliknij plik prawym przyciskiem myszy i wybierz opcję „Edytuj” z menu kontekstowego. Plik zostanie otwarty w Notatniku do dalszej edycji.
Zwykle pierwszy wiersz w pliku wsadowym często składa się z następującego polecenia.
ECHO Command
@echo off
Domyślnie plik wsadowy wyświetla swoje polecenie podczas działania. Celem tego pierwszego polecenia jest wyłączenie tego wyświetlacza. Polecenie „echo off” wyłącza wyświetlanie całego skryptu, z wyjątkiem samego polecenia „echo off”. Znak „at” „@” z przodu powoduje, że polecenie odnosi się również do siebie samego.
Dokumentacja
Bardzo często pliki wsadowe zawierają również wiersze zaczynające się od polecenia „Rem”. Jest to sposób na wprowadzanie komentarzy i dokumentacji. Komputer ignoruje wszystko w wierszu następującym po Rem. W przypadku plików wsadowych o coraz większym stopniu złożoności dobrym pomysłem jest dodanie komentarzy.
Pierwszy program skryptowy wsadowy
Skonstruujmy nasz prosty, pierwszy program skryptowy wsadowy. Otwórz notatnik i wprowadź następujące wiersze kodu. Zapisz plik jako „List.cmd”.
Kod wykonuje następujące czynności -
Używa polecenia echo off, aby upewnić się, że polecenia nie są wyświetlane, gdy kod jest wykonywany.
Polecenie Rem służy do dodawania komentarza, który mówi, co dokładnie robi ten plik wsadowy.
Polecenie dir służy do pobierania zawartości lokalizacji C: \ Program Files.
Polecenie „>” służy do przekierowania danych wyjściowych do pliku C: \ lists.txt.
Wreszcie, polecenie echo jest używane do poinformowania użytkownika, że operacja została zakończona.
@echo off
Rem This is for listing down all the files in the directory Program files
dir "C:\Program Files" > C:\lists.txt
echo "The program has completed"
Po wykonaniu powyższego polecenia nazwy plików z C: \ Program Files zostaną przesłane do pliku C: \ Lists.txt, aw wierszu poleceń zostanie wyświetlony komunikat „Program został zakończony”.
W plikach wsadowych występują dwa typy zmiennych. Jedna dotyczy parametrów, które mogą być przekazane podczas wywołania pliku wsadowego, a druga jest wykonywana za pomocą polecenia set.
Argumenty wiersza poleceń
Skrypty wsadowe obsługują koncepcję argumentów wiersza poleceń, w których argumenty mogą być przekazywane do pliku wsadowego po wywołaniu. Argumenty można wywoływać z plików wsadowych poprzez zmienne% 1,% 2,% 3 i tak dalej.
Poniższy przykład przedstawia plik wsadowy, który akceptuje 3 argumenty wiersza poleceń i wyświetla je echo na ekranie wiersza poleceń.
@echo off
echo %1
echo %2
echo %3
Jeśli powyższy skrypt wsadowy jest przechowywany w pliku o nazwie test.bat i mielibyśmy uruchomić plik wsadowy jako
Test.bat 1 2 3
Poniżej znajduje się zrzut ekranu pokazujący, jak wyglądałoby to w wierszu polecenia po wykonaniu pliku wsadowego.
Powyższe polecenie daje następujący wynik.
1
2
3
Gdybyśmy mieli uruchomić partię jako
Example 1 2 3 4
Wynik pozostałby taki sam jak powyżej. Jednak czwarty parametr zostałby zignorowany.
Ustaw polecenie
Innym sposobem inicjalizacji zmiennych jest polecenie „set”. Poniżej znajduje się składnia polecenia set.
Składnia
set /A variable-name=value
gdzie,
variable-name to nazwa zmiennej, którą chcesz ustawić.
value to wartość, którą należy ustawić w zmiennej.
/A – Ten przełącznik jest używany, jeśli wartość ma mieć charakter liczbowy.
Poniższy przykład przedstawia prosty sposób użycia polecenia set.
Przykład
@echo off
set message=Hello World
echo %message%
W powyższym fragmencie kodu zmienna o nazwie message jest zdefiniowana i ustawiona na wartość „Hello World”.
Aby wyświetlić wartość zmiennej, zwróć uwagę, że zmienna musi być ujęta w znak%.
Wynik
Powyższe polecenie daje następujący wynik.
Hello World
Praca z wartościami liczbowymi
W skrypcie wsadowym można również zdefiniować zmienną przechowującą wartość liczbową. Można to zrobić za pomocą przełącznika / A.
Poniższy kod przedstawia prosty sposób, w jaki można ustawić wartości liczbowe za pomocą przełącznika / A.
@echo off
SET /A a = 5
SET /A b = 10
SET /A c = %a% + %b%
echo %c%
Najpierw ustawiamy wartość 2 zmiennych, a i b odpowiednio na 5 i 10.
Dodajemy te wartości i przechowujemy w zmiennej c.
Na koniec wyświetlamy wartość zmiennej c.
Wynik powyższego programu wyniesie 15.
Wszystkie operatory arytmetyczne działają w plikach wsadowych. Poniższy przykład pokazuje, że operatory arytmetyczne mogą być używane w plikach wsadowych.
@echo off
SET /A a = 5
SET /A b = 10
SET /A c = %a% + %b%
echo %c%
SET /A c = %a% - %b%
echo %c%
SET /A c = %b% / %a%
echo %c%
SET /A c = %b% * %a%
echo %c%
Powyższe polecenie daje następujący wynik.
15
-5
2
50
Zmienne lokalne a globalne
W każdym języku programowania istnieje możliwość oznaczania zmiennych jako posiadających pewien zakres, tj. Sekcję kodu, w której można uzyskać do nich dostęp. Zwykle do zmiennej o zasięgu globalnym można uzyskać dostęp z dowolnego miejsca z poziomu programu, podczas gdy zmienne o zasięgu lokalnym mają zdefiniowaną granicę, w której można uzyskać do nich dostęp.
Skrypty DOS mają również definicję zmiennych o zasięgu lokalnym i globalnym. Domyślnie zmienne są globalne dla całej sesji wiersza poleceń. Wywołaj polecenie SETLOCAL, aby uczynić zmiennymi lokalnymi dla zakresu twojego skryptu. Po wywołaniu SETLOCAL, wszelkie przypisania zmiennych są przywracane po wywołaniu ENDLOCAL, wywołaniu EXIT lub gdy wykonanie osiągnie koniec pliku (EOF) w skrypcie. Poniższy przykład pokazuje różnicę, gdy zmienne lokalne i globalne są ustawione w skrypcie.
Przykład
@echo off
set globalvar = 5
SETLOCAL
set var = 13145
set /A var = %var% + 5
echo %var%
echo %globalvar%
ENDLOCAL
Kilka kluczowych rzeczy na temat powyższego programu.
Element „globalvar” ma zasięg globalny i jest dostępny w całym skrypcie.
Zmienna „var” jest zdefiniowana w zakresie lokalnym, ponieważ jest zawarta między blokami „SETLOCAL” i „ENDLOCAL”. Stąd ta zmienna zostanie zniszczona, gdy tylko zostanie wykonana instrukcja „ENDLOCAL”.
Wynik
Powyższe polecenie daje następujący wynik.
13150
5
Zauważysz, że polecenie echo% var% nic nie da, ponieważ po wyrażeniu ENDLOCAL zmienna „var” nie będzie już istnieć.
Praca ze zmiennymi środowiskowymi
Jeśli masz zmienne, które byłyby używane w plikach wsadowych, zawsze lepiej jest używać zmiennych środowiskowych. Po zdefiniowaniu zmiennej środowiskowej można uzyskać do niej dostęp za pomocą znaku%. Poniższy przykład pokazuje, jak wyświetlić JAVA_HOME zdefiniowany w systemie. Zmienna JAVA_HOME jest kluczowym komponentem, który jest zwykle używany w wielu różnych aplikacjach.
@echo off
echo %JAVA_HOME%
Dane wyjściowe pokażą katalog JAVA_HOME, który będzie zależał od systemu. Poniżej znajduje się przykład wyniku.
C:\Atlassian\Bitbucket\4.0.1\jre
Dobrą praktyką jest zawsze dodawanie komentarzy lub dokumentacji do tworzonych skryptów. Jest to wymagane do konserwacji skryptów, aby zrozumieć, co faktycznie robi skrypt.
Weźmy na przykład pod uwagę następujący fragment kodu, który nie ma żadnej formy komentarzy. Jeśli jakakolwiek przeciętna osoba, która nie opracowała poniższego skryptu, spróbuje go zrozumieć, zrozumienie tego, co faktycznie robi skrypt, zajęłoby jej dużo czasu.
ECHO OFF
IF NOT "%OS%"=="Windows_NT" GOTO Syntax
ECHO.%* | FIND "?" >NUL
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax
SETLOCAL
SET WSS=
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND "<03>"')
DO ECHO.%%a %%A
ENDLOCAL
GOTO:EOF
ECHO Display logged on users and their workstations.
ECHO Usage: ACTUSR [ filter ]
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part
of the computer name^(s^) to be displayed
Komentarze przy użyciu instrukcji Rem
Istnieją dwa sposoby tworzenia komentarzy w skrypcie wsadowym; jeden jest za pomocą polecenia Rem. Jakikolwiek tekst następujący po instrukcji Rem będzie traktowany jako komentarz i nie zostanie wykonany. Poniżej znajduje się ogólna składnia tej instrukcji.
Składnia
Rem Remarks
gdzie „Uwagi” to komentarze, które należy dodać.
Poniższy przykład pokazuje prosty sposób, w jaki Rem można użyć polecenia.
Przykład
@echo off
Rem This program just displays Hello World
set message=Hello World
echo %message%
Wynik
Powyższe polecenie daje następujący wynik. Zauważysz, że wiersz z instrukcją Rem nie zostanie wykonany.
Hello World
Komentarze przy użyciu instrukcji ::
Innym sposobem tworzenia komentarzy w skrypcie wsadowym jest użycie polecenia ::. Każdy tekst następujący po instrukcji :: będzie traktowany jako komentarz i nie zostanie wykonany. Poniżej znajduje się ogólna składnia tej instrukcji.
Składnia
:: Remarks
gdzie „Uwagi” to komentarz, który należy dodać.
Poniższy przykład ilustruje użycie polecenia „::”.
Przykład
@echo off
:: This program just displays Hello World
set message = Hello World
echo %message%
Wynik
Powyższe polecenie daje następujący wynik. Zauważysz, że wiersz z instrukcją :: nie zostanie wykonany.
Hello World
Note - Jeśli masz zbyt wiele wierszy Rem, może to spowolnić kod, ponieważ na końcu każda linia kodu w pliku wsadowym nadal musi zostać wykonana.
Spójrzmy na przykład dużego skryptu, który widzieliśmy na początku tego tematu, i zobaczmy, jak wygląda po dodaniu do niego dokumentacji.
::===============================================================
:: The below example is used to find computer and logged on users
::
::===============================================================
ECHO OFF
:: Windows version check
IF NOT "%OS%"=="Windows_NT" GOTO Syntax
ECHO.%* | FIND "?" >NUL
:: Command line parameter check
IF NOT ERRORLEVEL 1 GOTO Syntax
IF NOT [%2]==[] GOTO Syntax
:: Keep variable local
SETLOCAL
:: Initialize variable
SET WSS=
:: Parse command line parameter
IF NOT [%1]==[] FOR /F "tokens = 1 delims = \ " %%A IN ('ECHO.%~1') DO SET WSS = %%A
:: Use NET VIEW and NBTSTAT to find computers and logged on users
FOR /F "tokens = 1 delims = \ " %%a IN ('NET VIEW ^| FIND /I "\\%WSS%"') DO FOR /F
"tokens = 1 delims = " %%A IN ('NBTSTAT -a %%a ^| FIND /I /V "%%a" ^| FIND
"<03>"') DO ECHO.%%a %%A
:: Done
ENDLOCAL
GOTO:EOF
:Syntax
ECHO Display logged on users and their workstations.
ECHO Usage: ACTUSR [ filter ]
IF "%OS%"=="Windows_NT" ECHO Where: filter is the first part of the
computer name^(s^) to be displayed
Możesz teraz zobaczyć, że kod stał się bardziej zrozumiały dla użytkowników, którzy go nie opracowali, a zatem jest łatwiejszy w utrzymaniu.
W systemie DOS ciąg to uporządkowany zbiór znaków, na przykład „Hello, World!”.
S.Nr | Ciągi i opis |
---|---|
1 | Utwórz ciąg Łańcuch można utworzyć w DOS w następujący sposób. |
2 | Pusta struna Pusta struna |
3 | Interpolacja ciągów Interpolacja ciągów to sposób na skonstruowanie nowej wartości typu String z kombinacji stałych, zmiennych, literałów i wyrażeń poprzez uwzględnienie ich wartości wewnątrz literału ciągu. |
4 | Konkatenacja ciągów Możesz użyć operatora set, aby połączyć dwa łańcuchy lub ciąg i znak lub dwa znaki. Poniżej znajduje się prosty przykład, który pokazuje, jak używać konkatenacji ciągów. |
5 | Długość łańcucha W skryptach DOS nie ma zdefiniowanej funkcji długości do znajdowania długości łańcucha. Istnieją funkcje zdefiniowane przez użytkownika, których można użyć do tego samego. Poniżej znajduje się przykład zdefiniowanej przez użytkownika funkcji do wyświetlania długości ciągu. |
6 | toInt Zmienną, która została ustawiona jako łańcuch za pomocą zmiennej set, można przekonwertować na liczbę całkowitą za pomocą przełącznika / A, który używa zmiennej set. Poniższy przykład pokazuje, jak można to osiągnąć. |
7 | Wyrównaj do prawej Służyło to do wyrównywania tekstu do prawej strony, co zwykle służy do poprawy czytelności kolumn liczbowych. |
8 | Lewy ciąg Służy do wyodrębniania znaków z początku łańcucha. |
9 | Mid String Służy do wyodrębniania podciągu za pomocą pozycji znaków w ciągu. |
10 | Usunąć Funkcji zastępowania ciągów można również użyć do usunięcia podciągu z innego ciągu. |
11 | Usuń oba końce Służy do usuwania pierwszego i ostatniego znaku ciągu. |
12 | Usuń wszystkie spacje Służy do usuwania wszystkich spacji w ciągu poprzez podstawianie. |
13 | Zastąp ciąg Aby zamienić podciąg na inny ciąg, użyj funkcji podstawiania ciągów. |
14 | Prawy ciąg Służy do wyodrębniania znaków z końca ciągu. |
Tablice nie są szczegółowo definiowane jako typ w skrypcie wsadowym, ale można je zaimplementować. Podczas implementacji tablic w skrypcie wsadowym należy zwrócić uwagę na następujące rzeczy.
- Każdy element tablicy należy zdefiniować poleceniem set.
- Pętla „for” byłaby wymagana do iteracji po wartościach tablicy.
Tworzenie tablicy
Tablica jest tworzona za pomocą następującego polecenia set.
set a[0]=1
Gdzie 0 to indeks tablicy, a 1 to wartość przypisana do pierwszego elementu tablicy.
Innym sposobem implementacji tablic jest zdefiniowanie listy wartości i iteracja po liście wartości. Poniższy przykład pokazuje, jak można to zaimplementować.
Przykład
@echo off
set list = 1 2 3 4
(for %%a in (%list%) do (
echo %%a
))
Wynik
Powyższe polecenie daje następujący wynik.
1
2
3
4
Dostęp do tablic
Możesz pobrać wartość z tablicy, używając składni indeksu dolnego, przekazując indeks wartości, którą chcesz pobrać, w nawiasach kwadratowych, bezpośrednio po nazwie tablicy.
Przykład
@echo off
set a[0]=1
echo %a[0]%
W tym przykładzie indeks zaczyna się od 0, co oznacza, że dostęp do pierwszego elementu można uzyskać przy użyciu indeksu równego 0, do drugiego elementu można uzyskać dostęp za pomocą indeksu 1 i tak dalej. Sprawdźmy następujący przykład, aby utworzyć, zainicjować i uzyskać dostęp do tablic -
@echo off
set a[0] = 1
set a[1] = 2
set a[2] = 3
echo The first element of the array is %a[0]%
echo The second element of the array is %a[1]%
echo The third element of the array is %a[2]%
Powyższe polecenie daje następujący wynik.
The first element of the array is 1
The second element of the array is 2
The third element of the array is 3
Modyfikowanie tablicy
Aby dodać element na końcu tablicy, możesz użyć elementu set wraz z ostatnim indeksem elementu tablicy.
Przykład
@echo off
set a[0] = 1
set a[1] = 2
set a[2] = 3
Rem Adding an element at the end of an array
Set a[3] = 4
echo The last element of the array is %a[3]%
Powyższe polecenie daje następujący wynik.
The last element of the array is 4
Możesz zmodyfikować istniejący element tablicy, przypisując nową wartość pod danym indeksem, jak pokazano w poniższym przykładzie -
@echo off
set a[0] = 1
set a[1] = 2
set a[2] = 3
Rem Setting the new value for the second element of the array
Set a[1] = 5
echo The new value of the second element of the array is %a[1]%
Powyższe polecenie daje następujący wynik.
The new value of the second element of the array is 5
Iterowanie po tablicy
Iterację po tablicy uzyskuje się za pomocą pętli „for” i przechodzenia przez każdy element tablicy. Poniższy przykład pokazuje prosty sposób, w jaki można zaimplementować tablicę.
@echo off
setlocal enabledelayedexpansion
set topic[0] = comments
set topic[1] = variables
set topic[2] = Arrays
set topic[3] = Decision making
set topic[4] = Time and date
set topic[5] = Operators
for /l %%n in (0,1,5) do (
echo !topic[%%n]!
)
Należy zwrócić uwagę na następujące rzeczy dotyczące powyższego programu -
Każdy element tablicy należy szczegółowo zdefiniować za pomocą polecenia set.
Pętla „for” z parametrem / L do poruszania się po zakresach służy do iteracji po tablicy.
Wynik
Powyższe polecenie daje następujący wynik.
Comments
variables
Arrays
Decision making
Time and date
Operators
Długość tablicy
Długość tablicy jest określana przez iterację po liście wartości w tablicy, ponieważ nie ma bezpośredniej funkcji do określenia liczby elementów w tablicy.
@echo off
set Arr[0] = 1
set Arr[1] = 2
set Arr[2] = 3
set Arr[3] = 4
set "x = 0"
:SymLoop
if defined Arr[%x%] (
call echo %%Arr[%x%]%%
set /a "x+=1"
GOTO :SymLoop
)
echo "The length of the array is" %x%
Wynik
Dane wyjściowe Powyższe polecenie generuje następujące dane wyjściowe.
The length of the array is 4
Tworzenie struktur w szykach
Struktury mogą być również implementowane w plikach wsadowych przy użyciu dodatkowego kodowania do implementacji. Poniższy przykład pokazuje, jak można to osiągnąć.
Przykład
@echo off
set len = 3
set obj[0].Name = Joe
set obj[0].ID = 1
set obj[1].Name = Mark
set obj[1].ID = 2
set obj[2].Name = Mohan
set obj[2].ID = 3
set i = 0
:loop
if %i% equ %len% goto :eof
set cur.Name=
set cur.ID=
for /f "usebackq delims==.tokens=1-3" %%j in (`set obj[%i%]`) do (
set cur.%%k=%%l
)
echo Name = %cur.Name%
echo Value = %cur.ID%
set /a i = %i%+1
goto loop
W powyższym kodzie należy zwrócić uwagę na następujące kluczowe rzeczy.
Każda zmienna zdefiniowana za pomocą polecenia set ma 2 wartości powiązane z każdym indeksem tablicy.
Zmienna i jest ustawiona na 0, abyśmy mogli zapętlić strukturę o długości tablicy, która wynosi 3.
Zawsze sprawdzamy warunek, czy wartość i jest równa wartości len a jeśli nie, przechodzimy przez kod.
Jesteśmy w stanie uzyskać dostęp do każdego elementu struktury za pomocą notacji obj [% i%].
Wynik
Powyższe polecenie daje następujący wynik.
Name = Joe
Value = 1
Name = Mark
Value = 2
Name = Mohan
Value = 3
Struktury decyzyjne wymagają, aby programista określił jeden lub więcej warunków, które mają być ocenione lub przetestowane przez program, wraz z instrukcją lub instrukcjami do wykonania, jeśli warunek zostanie określony jako truei opcjonalnie inne instrukcje do wykonania, jeśli warunek zostanie określony false.
S.Nr | Ciągi i opis |
---|---|
1 | Jeśli instrukcja Pierwszym stwierdzeniem decyzyjnym jest stwierdzenie „jeśli”. |
2 | Instrukcja If / else Następną instrukcją do podejmowania decyzji jest instrukcja If / else. Poniżej znajduje się ogólna forma tego stwierdzenia. |
3 | Zagnieżdżone instrukcje if Czasami istnieje wymóg posiadania wielu instrukcji „if” osadzonych w sobie. Poniżej znajduje się ogólna forma tego stwierdzenia. |
Operator to symbol, który mówi kompilatorowi, aby wykonał określone operacje matematyczne lub logiczne.
W skrypcie wsadowym możliwe są następujące typy operatorów.
- Operatory arytmetyczne
- Operatorzy relacyjni
- Operatory logiczne
- Operatory przypisania
- Operatory bitowe
Operatory arytmetyczne
Język skryptowy wsadowy obsługuje zwykłe operatory arytmetyczne jako dowolny język. Poniżej przedstawiono dostępne operatory arytmetyczne.
Pokaż przykład
Operator | Opis | Przykład |
---|---|---|
+ | Dodanie dwóch operandów | 1 + 2 da 3 |
- | Odejmuje drugi operand od pierwszego | 2-1 daje 1 |
* | Mnożenie obu operandów | 2 * 2 da 4 |
/ | Podział licznika przez mianownik | 3/2 da 1,5 |
% | Operator modułu i reszta po dzieleniu liczb całkowitych / zmiennoprzecinkowych | 3% 2 da 1 |
Operatorzy relacyjni
Operatory relacyjne pozwalają na porównywanie obiektów. Poniżej znajdują się dostępne operatory relacyjne.
Pokaż przykład
Operator | Opis | Przykład |
---|---|---|
EQU | Testuje równość między dwoma obiektami | 2 EQU 2 da prawdę |
NEQ | Testuje różnicę między dwoma obiektami | 3 NEQ 2 da prawdę |
LSS | Sprawdza, czy lewy obiekt jest mniejszy niż prawy operand | 2 LSS 3 da prawdę |
LEQ | Sprawdza, czy lewy obiekt jest mniejszy lub równy prawemu operandowi | 2 LEQ 3 da prawdę |
GTR | Sprawdza, czy lewy obiekt jest większy niż prawy operand | 3 GTR 2 da prawdę |
GEQ | Sprawdza, czy lewy obiekt jest większy lub równy prawemu operandowi | 3 GEQ 2 da prawdę |
Operatory logiczne
Operatory logiczne służą do oceny wyrażeń boolowskich. Poniżej przedstawiono dostępne operatory logiczne.
Język wsadowy jest wyposażony w pełny zestaw operatorów logicznych, takich jak AND, OR, XOR, ale tylko dla liczb binarnych. Nie ma też żadnych wartości dla PRAWDA lub FAŁSZ. Jedynym operatorem logicznym dostępnym dla warunków jest operator NOT.
Pokaż przykład
Operator | Opis |
---|---|
I | To jest operator logiczny „i” |
LUB | To jest operator logiczny „lub” |
NIE | To jest logiczny operator „nie” |
Operatory przypisania
Język skryptów wsadowych udostępnia również operatory przypisania. Poniżej przedstawiono dostępne operatory przypisania.
Pokaż przykład
Operator | Opis | Przykład |
---|---|---|
+ = | To dodaje prawy operand do lewego operandu i przypisuje wynik do lewego operandu | Ustaw / A a = 5 a + = 3 Wyjście będzie wynosić 8 |
- = | To odejmuje prawy operand od lewego operandu i przypisuje wynik do lewego operandu | Ustaw / A a = 5 a - = 3 Wynik będzie 2 |
* = | To mnoży prawy operand z lewym operandem i przypisuje wynik do lewego operandu | Ustaw / A a = 5 a * = 3 Wynik wyniesie 15 |
/ = | To dzieli lewy operand z prawym operandem i przypisuje wynik lewemu operandowi | Ustaw / A a = 6 a / = 3 Wynik będzie 2 |
% = | Pobiera moduł przy użyciu dwóch operandów i przypisuje wynik do lewego operandu | Ustaw / A a = 5 a% = 3 Wynik będzie 2 |
Operatory bitowe
Operatory bitowe są również możliwe w skrypcie wsadowym. Poniżej przedstawiono dostępne operatory.
Pokaż przykład
Operator | Opis |
---|---|
& | To jest operator bitowy „i” |
| | To jest operator bitowy „lub” |
^ | To jest bitowy operator „xor” lub Exclusive lub |
Poniżej znajduje się tabela prawdy przedstawiająca te operatory.
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
Data i czas w skryptach DOS mają następujące dwa podstawowe polecenia do pobierania daty i godziny systemu.
DATA
To polecenie pobiera datę systemową.
Składnia
DATE
Przykład
@echo off
echo %DATE%
Wynik
Bieżąca data zostanie wyświetlona w wierszu polecenia. Na przykład,
Mon 12/28/2015
CZAS
To polecenie ustawia lub wyświetla czas.
Składnia
TIME
Przykład
@echo off
echo %TIME%
Wynik
Zostanie wyświetlony aktualny czas systemowy. Na przykład,
22:06:52.87
Poniżej znajduje się kilka implementacji, których można użyć do uzyskania daty i godziny w różnych formatach.
Data w formacie rok-miesiąc-dzień
Przykład
@echo off
echo/Today is: %year%-%month%-%day%
goto :EOF
setlocal ENABLEEXTENSIONS
set t = 2&if "%date%z" LSS "A" set t = 1
for /f "skip=1 tokens = 2-4 delims = (-)" %%a in ('echo/^|date') do (
for /f "tokens = %t%-4 delims=.-/ " %%d in ('date/t') do (
set %%a=%%d&set %%b=%%e&set %%c=%%f))
endlocal&set %1=%yy%&set %2=%mm%&set %3=%dd%&goto :EOF
Wynik
Powyższe polecenie daje następujący wynik.
Today is: 2015-12-30
Istnieją trzy uniwersalne „pliki” do wprowadzania danych z klawiatury, drukowania tekstu na ekranie i błędów drukowania na ekranie. Plik „Standard In”, znany jakostdin, zawiera dane wejściowe do programu / skryptu. Plik „Standard Out”, znany jakostdout, służy do zapisywania danych wyjściowych do wyświetlenia na ekranie. Wreszcie plik „Standard Err”, znany jakostderr, zawiera wszelkie komunikaty o błędach do wyświetlenia na ekranie.
Do każdego z tych trzech standardowych plików, zwanych inaczej strumieniami standardowymi, odwołujemy się przy użyciu liczb 0, 1 i 2. Stdin to plik 0, stdout to plik 1, a stderr to plik 2.
Przekierowywanie danych wyjściowych (standardowe wyjście i wyjście standardowe)
Jedną z powszechnych praktyk w plikach wsadowych jest wysyłanie danych wyjściowych programu do pliku dziennika. Operator> wysyła lub przekierowuje stdout lub stderr do innego pliku. Poniższy przykład pokazuje, jak można to zrobić.
Dir C:\ > list.txt
W powyższym przykładzie stdout polecenia Dir C: \ jest przekierowywane do pliku list.txt.
Jeśli dodasz liczbę 2 do filtru przekierowania, przekierowałaby ona plik stderr do pliku lists.txt.
Dir C:\ 2> list.txt
Można nawet połączyć stdout i stderrstrumieni przy użyciu numeru pliku i przedrostka „&”. Oto przykład.
DIR C:\ > lists.txt 2>&1
Blokowanie wyjścia programu
Pseudo plik NUL służy do odrzucania wszelkich danych wyjściowych programu. Poniższy przykład pokazuje, że dane wyjściowe polecenia DIR są odrzucane przez wysłanie danych wyjściowych do wartości NUL.
Dir C:\ > NUL
Stdin
Aby pracować ze standardem Stdin, musisz zastosować obejście, aby to osiągnąć. Można to zrobić, przekierowując własne stdin wiersza polecenia o nazwie CON.
Poniższy przykład pokazuje, jak przekierować dane wyjściowe do pliku o nazwie lists.txt. Po wykonaniu poniższego polecenia wiersz polecenia przyjmie wszystkie dane wprowadzone przez użytkownika, aż otrzyma znak EOF. Później wysyła wszystkie dane wejściowe do pliku lists.txt.
TYPE CON > lists.txt
Domyślnie, gdy wykonanie wiersza polecenia jest zakończone, powinno zwracać zero, gdy wykonanie powiedzie się lub niezerowe, gdy wykonanie się nie powiedzie. Gdy skrypt wsadowy zwraca wartość różną od zera po niepowodzeniu wykonania, wartość niezerowa wskazuje numer błędu. Następnie użyjemy numeru błędu, aby określić, o co chodzi, i odpowiednio go rozwiązać.
Poniżej znajduje się wspólny kod zakończenia i ich opis.
Kod błędu | Opis |
---|---|
0 | Program zakończony pomyślnie. |
1 | Niepoprawna funkcja. Wskazuje, że akcja podjęła próbę wykonania nierozpoznanego polecenia w wierszu polecenia systemu Windows cmd.exe. |
2 | System nie może odnaleźć określonego pliku. Wskazuje, że nie można znaleźć pliku w określonej lokalizacji. |
3 | System nie może odnaleźć określonej ścieżki. Wskazuje, że nie można znaleźć określonej ścieżki. |
5 | Odmowa dostępu. Wskazuje, że użytkownik nie ma prawa dostępu do określonego zasobu. |
9009 0x2331 |
Program nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy. Wskazuje, że polecenie, nazwa aplikacji lub ścieżka zostały błędnie wpisane podczas konfigurowania akcji. |
221225495 0xC0000017 -1073741801 |
Za mało pamięci wirtualnej. Wskazuje, że w systemie Windows zabrakło pamięci. |
3221225786 0xC000013A -1073741510 |
Aplikacja została zakończona w wyniku naciśnięcia klawiszy CTRL + C. Wskazuje, że aplikacja została zakończona przez naciśnięcie klawisza CTRL + C lub CTRL + Break przez użytkownika lub zamknięcie okna wiersza polecenia. |
3221225794 0xC0000142 -1073741502 |
Aplikacja nie została poprawnie zainicjalizowana. Wskazuje, że aplikacja została uruchomiona na pulpicie, do którego bieżący użytkownik nie ma praw dostępu. Inną możliwą przyczyną jest to, że nie udało się zainicjować pliku gdi32.dll lub user32.dll. |
Poziom błędu
Zmienna środowiskowa% ERRORLEVEL% zawiera kod powrotu ostatnio wykonanego programu lub skryptu.
Domyślnie sposobem sprawdzenia ERRORLEVEL jest następujący kod.
Składnia
IF %ERRORLEVEL% NEQ 0 (
DO_Something
)
Powszechne jest użycie polecenia EXIT / B% ERRORLEVEL% na końcu pliku wsadowego w celu zwrócenia kodów błędów z pliku wsadowego.
EXIT / B na końcu pliku wsadowego zatrzyma wykonywanie pliku wsadowego.
Użyj EXIT / B <exitcodes> na końcu pliku wsadowego, aby zwrócić niestandardowe kody powrotne.
Zmienna środowiskowa% ERRORLEVEL% zawiera ostatni poziom błędu w pliku wsadowym, który jest najnowszym kodem błędu z ostatniego wykonanego polecenia. W pliku wsadowym dobrą praktyką jest zawsze używanie zmiennych środowiskowych zamiast stałych, ponieważ ta sama zmienna jest rozwijana do różnych wartości na różnych komputerach.
Spójrzmy na szybki przykład, jak sprawdzić kody błędów w pliku wsadowym.
Przykład
Załóżmy, że mamy plik wsadowy o nazwie Find.cmd, który zawiera następujący kod. W kodzie wyraźnie wspomnieliśmy, że jeśli nie znajdziemy pliku o nazwie lists.txt, to powinniśmy ustawić poziom błędu na 7. Podobnie, jeśli zobaczymy, że zmienna userprofile nie jest zdefiniowana, powinniśmy ustawić kod poziomu błędu na 9.
if not exist c:\lists.txt exit 7
if not defined userprofile exit 9
exit 0
Załóżmy, że mamy inny plik o nazwie App.cmd, który najpierw wywołuje Find.cmd. Teraz, jeśli Find.cmd zwróci błąd, w którym ustawi poziom błędu na większy niż 0, wtedy zakończy działanie programu. W poniższym pliku wsadowym po wywołaniu funkcji Find.cnd w rzeczywistości sprawdza, czy poziom błędu jest większy niż 0.
Call Find.cmd
if errorlevel gtr 0 exit
echo “Successful completion”
Wynik
W powyższym programie możemy mieć następujące scenariusze jako wynik -
Jeśli plik c: \ lists.txt nie istnieje, nic nie zostanie wyświetlone w danych wyjściowych konsoli.
Jeśli zmienna userprofile nie istnieje, nic nie zostanie wyświetlone w wyniku konsoli.
Jeśli oba powyższe warunki spełnią się, w wierszu polecenia zostanie wyświetlony ciąg „Pomyślne ukończenie”.
Pętle
W rozdziale dotyczącym podejmowania decyzji widzieliśmy instrukcje, które były wykonywane jedna po drugiej w sposób sekwencyjny. Ponadto implementacje można również wykonać w skrypcie wsadowym, aby zmienić przepływ sterowania w logice programu. Następnie są one klasyfikowane jako przepływ oświadczeń kontrolnych.
S.Nr | Pętle i opis |
---|---|
1 | Implementacja instrukcji While W skrypcie wsadowym nie jest dostępna bezpośrednia instrukcja while, ale implementację tej pętli możemy bardzo łatwo wykonać, używając instrukcji if i etykiet. |
2 | Dla instrukcji - implementacje listy Konstrukcja „FOR” umożliwia zapętlanie plików wsadowych. Poniżej przedstawiono typową konstrukcję instrukcji „for” do pracy z listą wartości. |
3 | Przechodzenie przez zakresy Instrukcja „for” ma również możliwość przechodzenia przez zakres wartości. Poniżej przedstawiono ogólną formę oświadczenia. |
4 | Klasyczny do implementacji pętli Poniżej znajduje się klasyczna instrukcja „for” dostępna w większości języków programowania. |
Przechodzenie przez argumenty wiersza poleceń
Instrukcja „for” może być również używana do sprawdzania argumentów wiersza poleceń. Poniższy przykład pokazuje, jak można użyć instrukcji „for” do przeglądania argumentów wiersza poleceń.
Przykład
@ECHO OFF
:Loop
IF "%1"=="" GOTO completed
FOR %%F IN (%1) DO echo %%F
SHIFT
GOTO Loop
:completed
Wynik
Załóżmy, że powyższy kod jest przechowywany w pliku o nazwie Test.bat. Powyższe polecenie zwróci następujące dane wyjściowe, jeśli plik wsadowy przekaże argumenty wiersza polecenia równe 1,2 i 3 jako Test.bat 1 2 3.
1
2
3
S.Nr | Pętle i opis |
---|---|
1 | Implementacja instrukcji Break Instrukcja break służy do zmiany przepływu sterowania wewnątrz pętli w dowolnym języku programowania. Instrukcja break jest zwykle używana w konstrukcjach pętli i służy do natychmiastowego zakończenia najbardziej wewnętrznej otaczającej pętli. |
Funkcja to zestaw instrukcji zorganizowanych razem w celu wykonania określonego zadania. W skryptach wsadowych zastosowano podobne podejście do grupowania instrukcji logicznych w celu utworzenia funkcji.
Podobnie jak w przypadku innych języków, funkcje w skrypcie wsadowym działają według tej samej procedury -
Function Declaration - Informuje kompilator o nazwie funkcji, typie zwracanego i parametrach.
Function Definition - Dostarcza rzeczywistą treść funkcji.
Definicja funkcji
W skrypcie wsadowym funkcja jest definiowana za pomocą instrukcji label. Gdy funkcja jest nowo zdefiniowana, może przyjmować jedną lub kilka wartości jako „parametry” wejściowe funkcji, przetwarzać funkcje w części głównej i przekazywać wartości z powrotem do funkcji jako wyjściowe „typy zwracane”.
Każda funkcja ma nazwę, która opisuje zadanie, które funkcja wykonuje. Aby użyć funkcji, należy „wywołać” tę funkcję za pomocą jej nazwy i przekazać jej wartości wejściowe (znane jako argumenty), które odpowiadają typom parametrów funkcji.
Poniżej znajduje się składnia prostej funkcji.
:function_name
Do_something
EXIT /B 0
Nazwa_funkcji to nazwa nadana funkcji, która powinna mieć jakieś znaczenie, aby dopasować ją do tego, co funkcja faktycznie robi.
Instrukcja EXIT służy do zapewnienia prawidłowego zakończenia funkcji.
Poniżej znajduje się przykład prostej funkcji.
Przykład
:Display
SET /A index=2
echo The value of index is %index%
EXIT /B 0
S.Nr | Funkcje i opis |
---|---|
1 | Wywołanie funkcji Funkcja jest wywoływana w skrypcie wsadowym za pomocą polecenia call. |
2 | Funkcje z parametrami Funkcje mogą pracować z parametrami, po prostu przekazując je, gdy wywoływana jest funkcja. |
3 | Funkcje z wartościami zwracanymi Funkcje mogą pracować ze zwracanymi wartościami, po prostu przekazując nazwy zmiennych |
4 | Zmienne lokalne w funkcjach Zmienne lokalne w funkcjach mogą być używane w celu uniknięcia konfliktów nazw i zachowania lokalnych zmian w funkcji. |
5 | Funkcje rekurencyjne Możliwość całkowitego hermetyzowania treści funkcji przez zachowanie zmian zmiennych lokalnie dla funkcji i niewidoczność dla wywołującego. |
6 | We / wy pliku W skrypcie wsadowym możliwe jest wykonywanie normalnych operacji we / wy na plikach, których można oczekiwać w dowolnym języku programowania. |
7 | Tworzenie plików Tworzenie nowego pliku odbywa się za pomocą filtru przekierowania>. Tego filtru można użyć do przekierowania dowolnego wyjścia do pliku. |
8 | Pisanie do plików Zapis treści do plików odbywa się również za pomocą filtru przekierowania>. Tego filtru można użyć do przekierowania dowolnego wyjścia do pliku. |
9 | Dołączanie do plików Zapis treści do plików odbywa się również przy pomocy filtra podwójnego przekierowania >>. Ten filtr może służyć do dołączania dowolnego wyjścia do pliku. |
10 | Czytanie z plików Odczyt plików w skrypcie wsadowym odbywa się za pomocą polecenia pętli FOR, aby przejść przez każdą linię zdefiniowaną w pliku, który ma zostać odczytany. |
11 | Usuwanie plików Aby usunąć pliki, skrypt wsadowy udostępnia polecenie DEL. |
12 | Zmiana nazwy plików W przypadku zmiany nazw plików skrypt wsadowy udostępnia polecenie REN lub RENAME. |
13 | Przenoszenie plików Do przenoszenia plików skrypt wsadowy udostępnia polecenie PRZESUŃ. |
14 | Pliki wsadowe - Rury Operator potoku (|) pobiera dane wyjściowe (domyślnie STDOUT) jednego polecenia i kieruje je do wejścia (domyślnie STDIN) innego polecenia. |
15 | Pliki wsadowe - dane wejściowe Po uruchomieniu pliku wsadowego daje on możliwość przekazania parametrów wiersza poleceń, które można następnie odczytać w programie w celu dalszego przetwarzania. |
16 | Korzystanie z operatora SHIFT Jednym z ograniczeń argumentów wiersza poleceń jest to, że może akceptować tylko argumenty do% 9. Weźmy przykład tego ograniczenia. |
17 | Lornetka składana W skrypcie wsadowym możliwe jest wykonywanie normalnych operacji opartych na folderach, których można oczekiwać w dowolnym języku programowania. |
18 | Tworzenie folderów Tworzenie folderu odbywa się za pomocą polecenia MD (Utwórz katalog). |
19 | Wyświetlanie zawartości folderu Listę zawartości folderu można wykonać za pomocą polecenia dir. To polecenie umożliwia wyświetlenie dostępnych plików i katalogów w bieżącym katalogu. |
20 | Usuwanie folderów Aby usunąć foldery, skrypt wsadowy udostępnia polecenie DEL. |
21 | Zmiana nazw folderów W przypadku zmiany nazw folderów skrypt wsadowy udostępnia polecenie REN lub RENAME. |
22 | Przenoszenie folderów Do przenoszenia folderów skrypt wsadowy udostępnia polecenie PRZENIEŚ. |
W tym rozdziale omówimy różne procesy związane ze skryptem wsadowym.
Przeglądanie listy uruchomionych procesów
W skrypcie wsadowym komenda TASKLIST może zostać użyta do uzyskania listy aktualnie uruchomionych procesów w systemie.
Składnia
TASKLIST [/S system [/U username [/P [password]]]] [/M [module] | /SVC | /V] [/FI filter]
[/FO format] [/NH]
S.No. | Opcje i opis |
---|---|
1. | /S system Określa system zdalny do połączenia |
2. | /U [domain\]user Określa kontekst użytkownika, w którym polecenie powinno zostać wykonane. |
3. | /P [password] Określa hasło dla danego kontekstu użytkownika. Monituje o wprowadzenie danych, jeśli zostanie pominięty. |
4. | /M [module] Wyświetla listę wszystkich zadań aktualnie używających podanej nazwy exe / dll. Jeśli nazwa modułu nie jest określona, wyświetlane są wszystkie załadowane moduły. |
5. | /SVC Wyświetla usługi hostowane w każdym procesie. |
6. | /V Wyświetla szczegółowe informacje o zadaniu. |
7. | /FI filter Wyświetla zestaw zadań, które odpowiadają danym kryteriom określonym przez filtr. |
8. | /FO format Określa format wyjściowy. Prawidłowe wartości: „TABLE”, „LIST”, „CSV”. |
9. | /NH Określa, że „Nagłówek kolumny” nie powinien być wyświetlany w wyniku. Dotyczy tylko formatów „TABLE” i „CSV”. |
Przykłady
TASKLIST
Powyższe polecenie spowoduje wyświetlenie listy wszystkich procesów uruchomionych w systemie lokalnym. Poniżej znajduje się migawka danych wyjściowych, która jest renderowana, gdy powyższe polecenie jest uruchamiane bez zmian. Jak widać na poniższym wyjściu, nie tylko otrzymujesz różne procesy działające w systemie, ale także zużycie pamięci przez każdy proces.
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 4 K
System 4 Services 0 272 K
smss.exe 344 Services 0 1,040 K
csrss.exe 528 Services 0 3,892 K
csrss.exe 612 Console 1 41,788 K
wininit.exe 620 Services 0 3,528 K
winlogon.exe 648 Console 1 5,884 K
services.exe 712 Services 0 6,224 K
lsass.exe 720 Services 0 9,712 K
svchost.exe 788 Services 0 10,048 K
svchost.exe 832 Services 0 7,696 K
dwm.exe 916 Console 1 117,440 K
nvvsvc.exe 932 Services 0 6,692 K
nvxdsync.exe 968 Console 1 16,328 K
nvvsvc.exe 976 Console 1 12,756 K
svchost.exe 1012 Services 0 21,648 K
svchost.exe 236 Services 0 33,864 K
svchost.exe 480 Services 0 11,152 K
svchost.exe 1028 Services 0 11,104 K
svchost.exe 1048 Services 0 16,108 K
wlanext.exe 1220 Services 0 12,560 K
conhost.exe 1228 Services 0 2,588 K
svchost.exe 1276 Services 0 13,888 K
svchost.exe 1420 Services 0 13,488 K
spoolsv.exe 1556 Services 0 9,340 K
tasklist > process.txt
Powyższe polecenie pobiera dane wyjściowe wyświetlane przez listę zadań i zapisuje je w pliku process.txt.
tasklist /fi "memusage gt 40000"
Powyższe polecenie pobierze tylko te procesy, których pamięć jest większa niż 40 MB. Poniżej przedstawiono przykładowe dane wyjściowe, które można renderować.
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
dwm.exe 916 Console 1 127,912 K
explorer.exe 2904 Console 1 125,868 K
ServerManager.exe 1836 Console 1 59,796 K
WINWORD.EXE 2456 Console 1 144,504 K
chrome.exe 4892 Console 1 123,232 K
chrome.exe 4976 Console 1 69,412 K
chrome.exe 1724 Console 1 76,416 K
chrome.exe 3992 Console 1 56,156 K
chrome.exe 1168 Console 1 233,628 K
chrome.exe 816 Console 1 66,808 K
Zabijanie określonego procesu
Pozwala użytkownikowi z systemem Microsoft Windows XP Professional, Windows 2003 lub nowszym zabić zadanie z wiersza poleceń systemu Windows według identyfikatora procesu (PID) lub nazwy obrazu. Poleceniem używanym w tym celu jest TASKILL.
Składnia
TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter]
[/PID processid | /IM imagename] } [/T] [/F]
S.No. | Opcje i opis |
---|---|
1. | /S system Określa system zdalny do połączenia |
2. | /U [domain\]user Określa kontekst użytkownika, w którym polecenie powinno zostać wykonane. |
3. | /P [password] Określa hasło dla danego kontekstu użytkownika. Monituje o wprowadzenie danych, jeśli zostanie pominięty. |
4. | /FI FilterName Stosuje filtr, aby wybrać zestaw zadań. Pozwala na użycie „*”. dawny. nazwa_obrazu eq acme * Aby uzyskać dodatkowe informacje i przykłady, zobacz poniższe filtry. |
5. | /PID processID Określa PID procesu, który ma zostać zakończony. Użyj TaskList, aby uzyskać PID. |
6. | /IM ImageName Określa nazwę obrazu procesu, który ma zostać zakończony. Do określenia wszystkich zadań lub nazw obrazów można użyć symbolu wieloznacznego „*”. |
7. | /T Kończy określony proces i wszystkie uruchomione przez niego procesy potomne. |
8. | /F Określa wymuszenie zakończenia procesu (ów). |
Przykłady
taskkill /f /im notepad.exe
Powyższe polecenie zabija otwarte zadanie notatnika, jeśli jest otwarte.
taskill /pid 9214
Powyższe polecenie zabija proces, który ma proces 9214.
Rozpoczęcie nowego procesu
Skrypty DOS mają również możliwość rozpoczęcia nowego procesu. Osiąga się to za pomocą polecenia START.
Składnia
START "title" [/D path] [options] "command" [parameters]
W którym
title - Tekst paska tytułu okna CMD (wymagany).
path - Katalog startowy.
command - Polecenie, plik wsadowy lub program wykonywalny do uruchomienia.
parameters - parametry przekazane do polecenia.
S.No. | Opcje i opis |
---|---|
1. | /MIN Okno startowe Zminimalizowane |
2. | /MAX Okno startowe zmaksymalizowane. |
3. | /LOW Użyj klasy priorytetu IDLE. |
4. | /NORMAL Użyj NORMALNEJ klasy priorytetu. |
5. | /ABOVENORMAL Użyj klasy priorytetu ABOVENORMAL. |
6. | /BELOWNORMAL Użyj klasy priorytetu BELOWNORMAL. |
7. | /HIGH Użyj klasy WYSOKIEGO priorytetu. |
8. | /REALTIME Użyj klasy priorytetu REALTIME. |
Przykłady
START "Test Batch Script" /Min test.bat
Powyższe polecenie uruchomi skrypt wsadowy test.bat w nowym oknie. Okna będą uruchamiane w trybie zminimalizowanym i również będą miały tytuł „Test Batch Script”.
START "" "C:\Program Files\Microsoft Office\Winword.exe" "D:\test\TESTA.txt"
Powyższe polecenie faktycznie uruchomi Microsoft Word w innym procesie, a następnie otworzy plik TESTA.txt w MS Word.
Aliasy oznaczają tworzenie skrótów lub słów kluczowych dla istniejących poleceń. Załóżmy, że chcielibyśmy wykonać poniższe polecenie, które jest niczym innym jak poleceniem listy katalogów z opcją / w, aby nie wyświetlać wszystkich niezbędnych szczegółów w liście katalogów.
Dir /w
Załóżmy, że mamy utworzyć skrót do tego polecenia w następujący sposób.
dw = dir /w
Kiedy chcemy wykonać dir /w polecenie, możemy po prostu wpisać słowo dw. Słowo „dw” stało się teraz aliasem do polecenia Dir / w.
Tworzenie aliasu
Alias jest zarządzany przy użyciu doskey Komenda.
Składnia
DOSKEY [options] [macroname=[text]]
W którym
macroname - krótka nazwa makra.
text - Polecenia, które chcesz przywołać.
Poniżej znajduje się opis opcji, które można przedstawić poleceniu DOSKEY.
S.No. | Opcje i opis |
---|---|
1. | /REINSTALL Instaluje nową kopię Doskey |
2. | /LISTSIZE = size Ustawia rozmiar bufora historii poleceń. |
3. | /MACROS Wyświetla wszystkie makra Doskey. |
4. | /MACROS:ALL Wyświetla wszystkie makra Doskey dla wszystkich plików wykonywalnych, które mają makra Doskey. |
5. | /MACROS:exename Wyświetla wszystkie makra Doskey dla danego pliku wykonywalnego. |
6. | /HISTORY Wyświetla wszystkie polecenia przechowywane w pamięci. |
7. | /INSERT Określa, że nowy wpisywany tekst jest wstawiany do starego tekstu. |
8. | /OVERSTRIKE Określa, że nowy tekst zastępuje stary tekst. |
9. | /EXENAME = exename Określa plik wykonywalny. |
10. | /MACROFILE = filename Określa plik makr do zainstalowania. |
11. | macroname Określa nazwę tworzonego makra. |
12. | text Określa polecenia, które chcesz nagrać. |
Przykład
Utwórz nowy plik o nazwie keys.bat i wprowadź w nim następujące polecenia. Poniższe polecenia tworzą dwa aliasy, jeden dla polecenia cd, który automatycznie przechodzi do katalogu o nazwie test. A drugi jest dla polecenia dir.
@echo off
doskey cd = cd/test
doskey d = dir
Po wykonaniu polecenia będziesz mógł uruchomić te aliasy w wierszu polecenia.
Wynik
Poniższy zrzut ekranu pokazuje, że po wykonaniu powyższego utworzonego pliku wsadowego możesz swobodnie wprowadzić polecenie `` d '', co da ci listę katalogów, co oznacza, że twój alias został utworzony.
Usuwanie aliasu
Alias lub makro można usunąć, ustawiając wartość makra na NULL.
Przykład
@echo off
doskey cd = cd/test
doskey d = dir
d=
W powyższym przykładzie najpierw ustawiamy makro d na d = dir. Po czym ustawiamy go na NULL. Ponieważ ustawiliśmy wartość d na NULL, makro d zostanie usunięte.
Zastąpienie aliasu
Alias lub makro można zastąpić, ustawiając wartość makra na nową żądaną wartość.
Przykład
@echo off
doskey cd = cd/test
doskey d = dir
d = dir /w
W powyższym przykładzie najpierw ustawiamy makro d na d = dir. Po czym ustawiamy go na dir / w. Ponieważ ustawiliśmy wartość d na nową wartość, alias „d” przyjmie teraz nową wartość.
Windows ma teraz ulepszoną bibliotekę, której można używać w skrypcie wsadowym do pracy z urządzeniami podłączonymi do systemu. Jest to znane jako konsola urządzenia - DevCon.exe.
Twórcy i testerzy sterowników Windows mogą używać DevCon do weryfikacji, czy sterownik jest poprawnie zainstalowany i skonfigurowany, w tym odpowiednie pliki INF, stos sterowników, pliki sterowników i pakiet sterowników. Możesz także użyć poleceń DevCon (włącz, wyłącz, zainstaluj, uruchom, zatrzymaj i kontynuuj) w skryptach, aby przetestować sterownik.DevCon to narzędzie wiersza polecenia, które wykonuje funkcje zarządzania urządzeniami na komputerach lokalnych i zdalnych.
Wyświetl informacje o sterowniku i urządzeniu DevCon może wyświetlać następujące właściwości sterowników i urządzeń na komputerach lokalnych i komputerach zdalnych (z systemem Windows XP i starszymi) -
Identyfikatory sprzętu, zgodne identyfikatory i identyfikatory instancji urządzeń. Identyfikatory te są szczegółowo opisane w ciągach identyfikacyjnych urządzeń.
Klasy konfiguracji urządzeń.
Urządzenia w klasie konfiguracji urządzeń.
Pliki INF i pliki sterowników urządzeń.
Szczegóły pakietów sterowników.
Zasoby sprzętowe.
Status urządzenia.
Oczekiwany stos sterowników.
Pakiety sterowników innych firm w magazynie sterowników.
Wyszukiwanie urządzeń DevCon może wyszukiwać zainstalowane i odinstalowane urządzenia na komputerze lokalnym lub zdalnym według identyfikatora sprzętu, identyfikatora instancji urządzenia lub klasy konfiguracji urządzenia.
Zmień ustawienia urządzenia DevCon może zmienić stan lub konfigurację urządzeń Plug and Play (PnP) na komputerze lokalnym w następujący sposób -
Włącz urządzenie.
Wyłącz urządzenie.
Aktualizuj sterowniki (interaktywne i nieinteraktywne).
Zainstaluj urządzenie (utwórz devnode i zainstaluj oprogramowanie).
Usuń urządzenie z drzewa urządzeń i usuń jego stos urządzeń.
Przeskanuj ponownie w poszukiwaniu urządzeń Plug and Play.
Dodawaj, usuwaj i zmieniaj kolejność identyfikatorów sprzętu urządzeń wyliczonych jako root.
Zmień górne i dolne sterowniki filtrów dla klasy konfiguracji urządzeń.
Dodawaj i usuwaj pakiety sterowników innych firm z magazynu sterowników.
DevCon (DevCon.exe) jest dołączany podczas instalowania WDK, Visual Studio i Windows SDK dla aplikacji klasycznych. Po zainstalowaniu zestaw DevCon.exe jest dostępny w następujących lokalizacjach.
%WindowsSdkDir%\tools\x64\devcon.exe
%WindowsSdkDir%\tools\x86\devcon.exe
%WindowsSdkDir%\tools\arm\devcon.exe
Składnia
devcon [/m:\\computer] [/r] command [arguments]
w którym
/m:\\computer- Uruchamia polecenie na określonym komputerze zdalnym. Wymagane są ukośniki odwrotne.
/r- Warunkowe ponowne uruchomienie. Ponownie uruchamia system po zakończeniu operacji tylko wtedy, gdy ponowne uruchomienie jest wymagane, aby zmiana zaczęła obowiązywać.
command - Określa polecenie DevCon.
Aby wyświetlić i wyświetlić informacje o urządzeniach na komputerze, użyj następujących poleceń -
DevCon HwIDs
Klasy DevCon
DevCon ListClass
DevCon DriverFiles
DevCon DriverNodes
Zasoby DevCon
DevCon Stack
Stan DevCon
DevCon Dp_enum
Aby wyszukać informacje o urządzeniach na komputerze, użyj następujących poleceń -
DevCon Find
DevCon FindAll
Aby manipulować urządzeniem lub zmienić jego konfigurację, użyj następujących poleceń -
DevCon Enable
DevCon Disable
Aktualizacja DevCon
Aktualizacja DevConNI
Instalacja DevCon
DevCon Remove
DevCon Rescan
Uruchom ponownie DevCon
DevCon Reboot
DevCon SetHwID
DevCon ClassFilter
DevCon Dp_add
DevCon Dp_delete
Przykłady
Poniżej znajduje się kilka przykładów użycia polecenia DevCon.
List all driver files
Następujące polecenie używa operacji DevCon DriverFiles do wyświetlenia nazw plików sterowników używanych przez urządzenia w systemie. Komenda używa symbolu wieloznacznego (*) do wskazania wszystkich urządzeń w systemie. Ponieważ dane wyjściowe są obszerne, polecenie używa znaku przekierowania (>) do przekierowania danych wyjściowych do pliku referencyjnego, driverfiles.txt.
devcon driverfiles * > driverfiles.txt
Następujące polecenie używa operacji stanu DevCon, aby znaleźć stan wszystkich urządzeń na komputerze lokalnym. Następnie zapisuje status w pliku status.txt w celu zalogowania lub późniejszego przejrzenia. Polecenie używa symbolu wieloznacznego (*) do reprezentowania wszystkich urządzeń i znaku przekierowania (>), aby przekierować dane wyjściowe do pliku status.txt.
devcon status * > status.txt
Następujące polecenie włącza wszystkie urządzenia drukarki na komputerze, określając klasę konfiguracji drukarki w poleceniu DevCon Enable. Polecenie zawiera parametr / r, który powoduje ponowne uruchomienie systemu, jeśli jest to konieczne, aby włączenie było skuteczne.
devcon /r enable = Printer
Następujące polecenie używa operacji DevCon Install do zainstalowania klawiatury na komputerze lokalnym. Polecenie zawiera pełną ścieżkę do pliku INF urządzenia (keyboard.inf) oraz identyfikator sprzętu (* PNP030b).
devcon /r install c:\windows\inf\keyboard.inf *PNP030b
Następujące polecenie przeskanuje komputer w poszukiwaniu nowych urządzeń.
devcon scan
Następujące polecenie ponownie przeskanuje komputer w poszukiwaniu nowych urządzeń.
devcon rescan
Rejestr jest jednym z kluczowych elementów systemu Windows. Zawiera wiele informacji na temat różnych aspektów systemu operacyjnego. Prawie wszystkie aplikacje zainstalowane w systemie Windows współdziałają z rejestrem w takiej czy innej formie.
Rejestr zawiera dwa podstawowe elementy: klucze i wartości. Registry keys są obiektami kontenerów podobnymi do folderów. Registry valuessą obiektami niebędącymi kontenerami, podobnymi do plików. Klucze mogą zawierać wartości lub dalsze klucze. Odnośniki do kluczy mają składnię podobną do nazw ścieżek systemu Windows, przy użyciu odwrotnych ukośników do wskazania poziomów hierarchii.
W tym rozdziale omówiono różne funkcje, takie jak sprawdzanie wartości, dodawanie, usuwanie i edycja wartości z rejestru.
S.Nr | Typy rejestrów i opis |
---|---|
1 | Czytanie z rejestru Odczyt z rejestru odbywa się za pomocą polecenia REG QUERY. |
2 | Dodawanie do rejestru Dodawanie do rejestru odbywa się za pomocą polecenia REG ADD. |
3 | Usuwanie z rejestru Usuwanie z rejestru odbywa się za pomocą polecenia REG DEL. |
4 | Kopiowanie kluczy rejestru Kopiowanie z rejestru odbywa się za pomocą polecenia REG COPY. |
5 | Porównanie kluczy rejestru Porównanie kluczy rejestru odbywa się za pomocą polecenia REG COMPARE. |
Skrypt wsadowy ma możliwość pracy z ustawieniami sieciowymi. Polecenie NET służy do aktualizowania, naprawiania lub przeglądania sieci lub ustawień sieciowych. W tym rozdziale omówiono różne opcje dostępne dla polecenia net.
S.Nr | NET - polecenia i opis |
---|---|
1 | RACHUNKI NETTO Wyświetl aktualne ograniczenia dotyczące haseł i logowania dla komputera. |
2 | NET CONFIG Wyświetla bieżące ustawienia serwera lub grupy roboczej. |
3 | KOMPUTER SIECIOWY Dodaje lub usuwa komputer podłączony do kontrolera domeny systemu Windows. |
4 | UŻYTKOWNIK SIECI Tego polecenia można użyć do następujących celów Wyświetl szczegóły konkretnego konta użytkownika. |
5 | NET STOP / START To polecenie służy do zatrzymywania i uruchamiania określonej usługi. |
6 | STATYSTYKI NETTO Wyświetl statystyki sieciowe stacji roboczej lub serwera. |
7 | ZASTOSOWANIE NETTO Łączy lub odłącza komputer od udostępnionego zasobu lub wyświetla informacje o połączeniach. |
Drukowanie można również kontrolować z poziomu skryptu wsadowego za pomocą polecenia NET PRINT.
Składnia
PRINT [/D:device] [[drive:][path]filename[...]]
Gdzie / D: urządzenie - określa urządzenie drukujące.
Przykład
print c:\example.txt /c /d:lpt1
Powyższe polecenie wydrukuje plik example.txt na porcie równoległym lpt1.
Sterowanie drukarką w wierszu poleceń
Począwszy od systemu Windows 2000, wiele, ale nie wszystkie, ustawienia drukarki można skonfigurować z wiersza poleceń systemu Windows za pomocą PRINTUI.DLL i RUNDLL32.EXE
Składnia
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry [ options ] [ @commandfile ]
Gdzie niektóre z dostępnych opcji są następujące -
/dl - Usuń drukarkę lokalną.
/dn - Usuń połączenie drukarki sieciowej.
/dd - Usuń sterownik drukarki.
/e - Wyświetl preferencje drukowania.
/f[file] - Plik inf lub plik wyjściowy.
/F[file] - Lokalizacja pliku INF, od którego może zależeć plik INF określony za pomocą / f.
/ia - Zainstaluj sterownik drukarki za pomocą pliku inf.
/id - Zainstaluj sterownik drukarki za pomocą kreatora dodawania sterownika drukarki.
/if - Zainstaluj drukarkę za pomocą pliku inf.
/ii - Zainstaluj drukarkę za pomocą kreatora dodawania drukarki z plikiem inf.
/il - Zainstaluj drukarkę za pomocą kreatora dodawania drukarki.
/in - Dodaj połączenie drukarki sieciowej.
/ip - Zainstaluj drukarkę za pomocą kreatora instalacji drukarki sieciowej.
/k - Wydrukuj stronę testową na określonej drukarce, nie można łączyć z poleceniem podczas instalowania drukarki.
/l[path] - Ścieżka źródłowa sterownika drukarki.
/m[model] - Nazwa modelu sterownika drukarki.
/n[name] - Nazwa drukarki.
/o - Wyświetl widok kolejki drukarki.
/p - Wyświetl właściwości drukarki.
/Ss - Zapisz ustawienia drukarki w pliku.
/Sr - Przywróć ustawienia drukarki z pliku.
/y - Ustaw drukarkę jako domyślną.
/Xg - Pobierz ustawienia drukarki.
/Xs - Skonfiguruj ustawienia drukarki.
Testowanie, czy drukarka istnieje
Mogą wystąpić przypadki, w których możesz być podłączony do drukarki sieciowej zamiast drukarki lokalnej. W takich przypadkach zawsze dobrze jest sprawdzić, czy drukarka istnieje w pierwszej kolejności przed drukowaniem.
Istnienie drukarki można ocenić za pomocą RUNDLL32.EXE PRINTUI.DLL, który jest używany do kontrolowania większości ustawień drukarki.
Przykład
SET PrinterName = Test Printer
SET file=%TEMP%\Prt.txt
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Xg /n "%PrinterName%" /f "%file%" /q
IF EXIST "%file%" (
ECHO %PrinterName% printer exists
) ELSE (
ECHO %PrinterName% printer does NOT exists
)
Powyższe polecenie wykona następujące czynności -
Najpierw ustawia nazwę drukarki i ustawia nazwę pliku, w którym będą przechowywane ustawienia drukarki.
Polecenia RUNDLL32.EXE PRINTUI.DLL zostaną użyte do sprawdzenia, czy drukarka rzeczywiście istnieje, wysyłając ustawienia konfiguracyjne pliku do pliku Prt.txt
Bardzo często możesz napotkać problemy podczas uruchamiania plików wsadowych i najczęściej będziesz musiał debugować swoje pliki wsadowe w jakiś sposób, aby określić problem z samym plikiem wsadowym. Poniżej przedstawiono niektóre techniki, które mogą pomóc w debugowaniu plików skryptów wsadowych.
Komunikaty o błędach
Aby odkryć źródło wiadomości, wykonaj następujące kroki:
Step 1 - USUŃ linię @ECHO OFF, tj. REM @ECHO OFF lub :: @ECHO OFF.
Step 2 - Uruchom plik wsadowy z wymaganymi parametrami wiersza poleceń, przekierowując wszystkie dane wyjściowe do pliku dziennika w celu późniejszego porównania.
test.bat > batch.log 2>&1
Step 3 - Przeszukaj plik batch.log pod kątem komunikatów o błędach
Step 4- Sprawdź poprzednią linię pod kątem nieoczekiwanych lub nieprawidłowych poleceń, przełączników lub wartości linii poleceń; zwróć szczególną uwagę na wartości wszelkich zmiennych środowiskowych użytych w poleceniu.
Step 5 - Popraw błąd i powtarzaj ten proces, aż znikną wszystkie komunikaty o błędach.
Złożone linie poleceń
Innym częstym źródłem błędów są niepoprawnie przekierowane polecenia, takie jak na przykład „zagnieżdżone” polecenia FIND lub FINDSTR z nieprawidłowymi ciągami wyszukiwania, czasami w pętli FOR / F.
Aby sprawdzić poprawność tych złożonych poleceń, wykonaj następujące kroki:
Step 1 - Wstaw "linie kontrolne poleceń" tuż przed linią, która używa złożonego zestawu poleceń.
Poniżej znajduje się przykład, w którym polecenie ECHO jest wstawiane, aby zaznaczyć, gdzie kończy się wyjście pierwszego polecenia TYPE, a zaczyna następny.
TYPE %Temp%.\apipaorg.reg
ECHO.================================================ TYPE %Temp%.\apipaorg.reg
| FIND
"[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"
Step 2 - Postępuj zgodnie z procedurą, aby znaleźć źródła komunikatów o błędach opisane powyżej.
Step 3- Zwróć szczególną uwagę na wynik "uproszczonych" linii poleceń: Czy wynik ma oczekiwany format? Czy wartość lub pozycja „tokena” jest zgodna z oczekiwaniami?
Podprogramy
Podprogramy generujące komunikaty o błędach stanowią dodatkowe „wyzwanie” w znalezieniu przyczyny błędu, ponieważ mogą być wywoływane wielokrotnie w tym samym pliku wsadowym.
Aby dowiedzieć się, co powoduje nieprawidłowe wywołanie podprogramu, wykonaj następujące kroki -
Step 1 - Dodaj i zresetuj zmienną licznika na początku skryptu -
SET Counter = 0
Step 2 - Zwiększaj licznik za każdym razem, gdy wywoływany jest podprogram, wstawiając następujący wiersz na początku podprogramu
SET /A Counter+=1
Step 3- Wstaw kolejną linię zaraz po inkrementacji licznika, zawierającą tylko polecenie SET; spowoduje to wyświetlenie wszystkich zmiennych środowiskowych i ich wartości.
Step 4 - Postępuj zgodnie z procedurą, aby znaleźć źródła komunikatów o błędach opisane powyżej.
Wersje Windows
Jeśli zamierzasz rozpowszechniać pliki wsadowe na inne komputery, które mogą lub nie mogą działać w tej samej wersji systemu Windows, będziesz musiał przetestować pliki wsadowe w jak największej liczbie wersji systemu Windows.
Poniższy przykład pokazuje, jak sprawdzić różne wersje systemu operacyjnego, aby sprawdzić odpowiednie wersje systemu Windows.
@ECHO OFF
:: Check for Windows NT 4 and later
IF NOT "%OS%"=="Windows_NT" GOTO DontRun
:: Check for Windows NT 4
VER | FIND "Windows NT" >NUL && GOTO DontRun
:: Check for Windows 2000
VER | FIND "Windows 2000" >NUL && GOTO DontRun
:: Place actual code here . . .
:: End of actual code . . .
EXIT
:DontRun
ECHO Sorry, this batch file was written for Windows XP and later versions only
Logowanie jest możliwe w skrypcie wsadowym za pomocą polecenia przekierowania.
Składnia
test.bat > testlog.txt 2> testerrors.txt
Przykład
Utwórz plik o nazwie test.bat i wprowadź w nim następującą komendę.
net statistics /Server
Powyższe polecenie zawiera błąd, ponieważ opcja polecenia statystyki sieci jest podana w nieprawidłowy sposób.
Wynik
Jeśli polecenie z powyższym plikiem test.bat zostanie uruchomione jako
test.bat > testlog.txt 2> testerrors.txt
I otworzysz plik testerrors.txt, zobaczysz następujący błąd.
The option /SERVER is unknown.
Składnia tego polecenia to -
NET STATISTICS
[WORKSTATION | SERVER]
Więcej pomocy można uzyskać, wpisując NET HELPMSG 3506.
Jeśli otworzysz plik o nazwie testlog.txt, wyświetli się dziennik z wykonanymi poleceniami.
C:\tp>net statistics /Server