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\binna 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