Pliki wsadowe/Windows: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Syum90 (dyskusja | edycje)
m Wycofano edycje użytkownika 79.184.174.203 (dyskusja). Autor przywróconej wersji to Syum90.
UWAGA! Zastąpienie treści hasła bardzo krótkim tekstem: „'''lubisz od tylu?'''”
Linia 1:
'''lubisz od tylu?'''
W systemach Windows można stosować takie pliki do tworzenia prostych programów. Ponieważ działają one głównie w trybie tekstowym do ich tworzenia wymagana jest znajomość komend [[MS-DOS]], które nie zostaną tutaj opisane.
 
== Hello World ==
Zaczynamy od standardowego Hello World:
<source lang="dos">
@echo off
echo Hello World
pause
</source>
I uruchamiamy program dwuklikiem. Wyświetli on napis ''Hello World'' i poprosi o naciśnięcie dowolnego klawisza. Opis komend:
*<code>@echo off</code> - wyłączenie wyświetlania komend na ekranie.
*<code>echo</code> - wyświetlenie tekstu. Jako argumenty podajemy tekst do wyświetlenia.
*<code>pause</code> - oczekiwanie na naciśnięcie dowolnego klawisza.
Ze znajomością tych kilku komend możesz już pisać programy służące do robienia powtarzających się czynności, np. kopiowania plików a następnie przetwarzania ich. Jednak taki program nie jest '''interakcyjny''', czyli nie pozostawia wyboru użytkownikowi co do jego działania.
 
== Przyjmowanie danych ==
=== W trakcie działania programu ===
Zaczniemy od przyjmowania danych w oknie programu. Oto kod:
<source lang="dos">
@echo off
set /p imie=Jak masz na imię?
echo Witaj %imie%!
pause
</source>
{{Uwaga|Funkcja set /p została wprowadzona dopiero w Windows 2000. Po więcej informacji zajrzyj do rozdziału o [[../MS-DOS|MS-DOS i Windows 9x]].}}
Ten program zapyta nas o imię i wyświetli je. Komendy:
* <code>set /p zmienna=zacheta</code> - zapytanie o coś i zapisanie tego jako tzw. zmienna środowiskowa. Zmienne środowiskowe mogą być stałe, jak na przykład <code>COMSPEC</code> zawierająca ścieżkę do interpretera poleceń. Nazwy zmiennych podajemy ograniczone procentami.
 
=== Jako argumenty ===
Argumenty to dane przyjmowane w momencie uruchamiania. Możemy je wpisywać przez konsolę lub w oknie ''Właściwości''. Są one oznaczane jako %1, %2, itd. Jeżeli uruchamiamy coś w jakimś programie, to zostanie mu to podane jako pierwszy argument i możemy to wykorzystać. Dla przykładu, oto program "cicho" usuwający uruchamiany plik:
<source lang="dos">
@echo off
if exist %1 del %1
</source>
 
Linijka <tt>if exist %1 del %1</tt> oznacza ''jeżeli istnieje %1 usuń %1'' (zachowano oryginalną składnię). Jeżeli program zostanie uruchomiony bez argumentu nic się nie stanie. Więcej o instrukcjach warunkowych dowiesz się w następnym dziale.
 
== Instrukcje warunkowe i interakcja ze środowiskiem ==
Napiszemy sobie teraz program z listą stron internetowych. Po wpisaniu numeru którejś zostanie uruchomiona przeglądarka internetowa z tą stroną. Kod:
<source lang="dos">
@echo off
echo POLECANE STRONY INTERNETOWE
echo [1] - Wikibooks
echo [2] - Wikipedia
echo [3] - Pliki wsadowe w Wikibooks
echo [4] - Pliki wsadowe w Wikipedii
set /p odp=Podaj numer strony do uruchomienia?
if %odp%=="1" start "iexplore.exe http://pl.wikibooks.org"
if %odp%=="2" start "iexplore.exe http://pl.wikipedia.org"
if %odp%=="3" start "iexplore.exe http://pl.wikibooks.org/Pliki_wsadowe"
if %odp%=="4" start "iexplore.exe http://pl.wikibooks.org/Program_wsadowy"
if not %odp%=="1" exit
if not %odp%=="2" exit
if not %odp%=="3" exit
if not %odp%=="4" exit
</source>
Oczywiście możesz (no dobra, powinieneś) zmienić iexplore.exe na ścieżkę do własnej przeglądarki internetowej. Komendy:
* <code>if [not] [exist] cos==cos komenda</code> - jeżeli coś równa się czemuś wykonaj komendę. Jeżeli użyte jest <tt>not</tt>, stanie się przeciwieństwo - jeżeli coś '''nie''' równa się czemuś wykonaj komendę. Jeżeli użyte jest <tt>exist</tt>, zamiast zwykłego sprawdzenia warunku sprawdzane jest istnienie danego pliku (w przykładzie w poprzednim rozdziale).
* <code>start</code> - wykonanie jakiegoś programu w osobnym oknie.
* <code>call</code> - odmiana komendy start służąca do uruchomienia jakiegoś pliku wsadowego w tym samym oknie. Może służyć do podzielenia skomplikowanego programu na mniejsze części (tutaj niewykorzystana).
 
Wykorzystanie instrukcji warunkowych w celu znalezienia pliku.
<source lang="dos">
if exist c:\moje\zm.txt goto 1
if not exist c:\moje\zm.txt goto 2
:1
echo Znaleziono plik.
pause >nul
exit
:2
echo Nie znaleziono pliku.
pause >nul
exit
</source>
 
== Etykiety ==
Etykieta to narzędzie pozwalające na "skakanie" po kodzie. Wykorzystamy je do ''zapętlenia'' powyższego programu - pytanie o numer strony będzie się pojawiać dopóki, dopóty nie poda się jako numer strony litery q (od ''quit''). Kod:
 
<source lang="dos">
@echo off
echo POLECANE STRONY INTERNETOWE
:tekst
cls
echo [1] - Wikibooks
echo [2] - Wikipedia
echo [3] - Pliki wsadowe w Wikibooks
echo [4] - Pliki wsadowe w Wikipedii
:zapytanie
set /p odp=Podaj numer strony do uruchomienia (q aby wyjść, t aby powtórzyć strony)?
if %odp%=="q" goto wyjscie
if %odp%=="t" goto tekst
if %odp%=="1" start "iexplore.exe http://pl.wikibooks.org"
if %odp%=="2" start "iexplore.exe http://pl.wikipedia.org"
if %odp%=="3" start "iexplore.exe http://pl.wikibooks.org/Pliki_wsadowe"
if %odp%=="4" start "iexplore.exe http://pl.wikipedia.org/Program_wsadowy"
if not %odp%=="q" goto tekst
if not %odp%=="t" goto tekst
if not %odp%=="1" goto tekst
if not %odp%=="2" goto tekst
if not %odp%=="3" goto tekst
if not %odp%=="4" goto tekst
goto zapytanie
:wyjscie
</source>
Zadeklarowaliśmy sobie trzy etykiety (zaznaczone na fioletowo). Instrukcja goto służy do "skakania" między nimi. Po sprawdzeniu argumentu program wraca się do etykiety zapytanie. Jeżeli argumentem było <code>q</code> program idzie od razu do etykiety wyjscie - program się kończy, jeżeli <code>t</code> program wraca do początku i ponownie wyświetla polecane strony.
 
==Komentarze==
Jeżeli chcemy opisać dany fragment programu, musimy skorzystać z komendy REM lub znaku ::,
czyli np:
<source lang="dos">
@echo off
REM pojawi się komunikat
echo Hello World
:: wstrzymanie pracy programu
pause
</source>
 
==Zapisywanie danych do pliku==
Zapisywanie danych do pliku tekstowego odbywa się za pomocą symbolu > lub >> .
Oto dwa przypadki:
 
<source lang="dos">
rem Przypadek 1
set /a m=2
echo %m% >>zm.txt
pause >>nul
 
rem Przypadek 2
set /a m=2
echo %m% >zm.txt
pause >>nul
 
</source>
W przypadku pierwszym komenda set /a przyporządkowała zmiennej m cyfrę 2 a symbol >> dopisał zmienną do pliku zm.txt lub utworzył nowy gdyby nie było zm.txt.
 
W przypadku drugim symbol > kasował dane z pliku zm.txt i zapisał nowe lub utworzył nowy gdyby nie było zm.txt
 
Gdy skorzystamy z tego ułatwienia, możemy zapisać pause >nul tzn. nie będziemy widzieć "Aby kontynuować, naci˜nij dowolny klawisz . . . " na ekranie konsoli.
 
 
== Zakończenie ==
Teraz już potrafisz pisać proste programiki dla systemów Windows. Jeżeli zabrakło Ci jakiejś funkcji, napisz w [[Dyskusja:Pliki wsadowe|dyskusji]].
 
Wszystkie kody źródłowe wykorzystane w tym module dostępne są na licencji [[Wikipedysta:Przemub/MIT|MIT (Expat)]].