Skrypt wsadowy - zmienne
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 pokazuje 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żliwe jest również zdefiniowanie zmiennej przechowującej 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 wszystkie 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 informacji 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 instrukcji ENDLOCAL zmienna „var” już nie będzie 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%
Wynik pokaże katalog JAVA_HOME, który będzie zależał od systemu do systemu. Poniżej znajduje się przykład wyniku.
C:\Atlassian\Bitbucket\4.0.1\jre