mgr inż. Wacław Libront * Bobowa 2020
ZSO Bobowa, ul. Długoszowskich 1, 38-350 Bobowa, tel: 0183530220, fax: 0183530221, email: sekretariat@zsobobowa.eu, www: zsobobowa.eu
Pliki wsadowe mogą pobierać argumenty (parametry). Wewnątrz programu wsadowego parametry jego wywołania reprezentowane są przez napisy od %1 do %9 Pierwszy parametr %1, drugi %2 itd. Parametr %0 reprezentuje wykonywany plik. Parametry możemy wpisywać ręcznie lub przeciągać pliki myszką na ikonę aplikacji wsadowej.
W konsoli możemy wpisywać pełną nazwę pliku wsadowego wraz z rozszerzeniem lub pominąć rozszerzenie - system je rozpozna automatycznie uruchomi.
TEST
Plik wsadowy TEST.BAT zawiera polecenie
ECHO %1
Po uruchomieniu pliku wsadowego z parametrem
TEST.BAT „Ala ma kota”
na ekranie wyświetlony zostanie napis „Ala ma kota”
Program wsadowy będzie przetwarzał napis jako parametr %1. Jeżeli plik
wsadowy TEST.BAT zawierałby instrukcję
echo %4 %3 %2 %1
to uruchomienie go spowoduje wyświetlenie parametrów w odwrotnej kolejności.
WYSZUKAJ
Plik wsadowy SZUKAJ.BAT zawiera polecenie
FIND %1 %2
Parametr 1 jest tekstem do wyszukania
Parametr 2 jest plikiem, w którym szukamy
Po wywołaniu polecenia
SZUKAJ.BAT ”przychodzi baba” baba.zar
program wsadowy wyszuka wszystkie wiersze w których znajduje się tekst
„przychodzi baba” w pliku baba.zar
UWAGA CUDZYSŁÓW
Jeżeli w pliku wsadowym mamy
FIND ”%1” %2
Parametr %1 w cudzysłowie, to możemy przy uruchamianiu polecenia możemy
pominąć cudzysłów i wywołać plik
SZUKAJ przychodzi baba.zar
Działa to tylko dla parametrów zawierających tylko jeden wyraz!
WYSZUKAJ 2
Plik wsadowy SZUKAJ.BAT zawiera
@ECHO OFF
cls
REM sprawdzamy czy jest drugi parametr - cudzysłów
IF "%2"=="" GOTO param
REM sprawdzamy czy plik istnieje
IF NOT EXIST %2 GOTO plik
REM wyszukujemy gdy jest 2 parametry i plik na dysku
FIND %1 %2
GOTO koniec
REM brak drugiego parametru
:param
echo potrzebne 2 parametry: "tekst do wyszukania" i plik, gdzie szukamy
GOTO koniec
REM brak pliku na dysku
:plik
echo Brak pliku: %2
GOTO koniec
REM koniec programu
:koniec
ECHO ON
Sprawdzanie są 2 parametry (najpierw drugi) i czy jest plik na dysku. Poszczególne części programu zostały opatrzone stosownymi komentarzami ułatwiającymi zrozumienie działania.
USUWANIE
Plik wsadowy USUWANIE.BAT usunie plik podany jako argument
@ECHO OFF
IF EXIST %1 GOTO Usuwaj
ECHO Plik %1 nie istnieje...
GOTO Koniec
:Usuwaj
ECHO Usuwanie pliku %1 ...
DEL %1 > NUL
ECHO Wykonane...
:Koniec
Sprawdzany jest parametr, najpierw czy plik, a potem czy jest podany parametr.
Polecenie SHIFT zmienia kolejność parametrów przekazywanych do programu
wsadowego. Bez żadnych opcji polecenie przesuwa każdy argument o jedną pozycję w
lewo - do początku listy argumentów - powodując, że drugiemu argumentowi wiersza
poleceń odpowiada %1, trzeciemu %2 i tak dalej.
KOPIOWANIE
Kopiowanie plików o rozszerzeniach podanych jako kolejne parametry. Po
każdym skopiowaniu plików, przesuwany jest parametr na kolejną pozycję, do
momentu aż wyczerpie się pila parametrów i sprawdzany będzie pusty.
:KOPIOWANIE
REM Jeżeli nie ma parametru %1, przeskok do etykiety END
%1 musi być w cudzysłowie !!! jeśli tekst parametry w cudzysłowie
If ”%1”=="" GOTO END
REM Kopiowanie plików z rozszerzeniem określonym parametrem %1
COPY C:\*.%1 D:\
REM Przesunięcie parametrów.
SHIFT
GOTO KOPIOWANIE
REM koniec
:END
Uruchomienie programu z trzema parametrami:
PLIK.BAT bat com exe
spowoduje usunięcie wszystkich plików z takimi rozszerzeniami
Instrukcja FOR powtarza polecenie dla każdej pozycji w zadanym zbiorze, przypisując danej zmiennej sterującej pętlą, kolejne wartości z tego zbioru. W ten sposób umożliwia ona np. uruchomienie określonego polecenia dla każdego pliku znajdującego się w zbiorze. W przypadku, gdy komenda FOR jest wpisywana w linii poleceń, to nazwa zmiennej musi być poprzedzona jednym znakiem %. W przypadku, gdy komenda ta znajduje się w pliku wsadowym, wymagane jest poprzedzenie zmiennej sterującej dwoma znakami procent - %%.
Wersje polecenia FOR dla wywołania z konsoli
FOR %i IN (1 3 5 -1) DO ECHO %i
Wyświetlane są kolejne liczby z listy
FOR %i IN (*.*) DO @echo %i
Wyświetlane są pliki o dowolnej nazwie z bieżącego foldera.
Znak @ przed poleceniem echo - eliminuje wyświetlanie polecenia.
FOR %i IN (*.bat) DO TYPE %i
Na ekranie wyświetlone wszystkie pliki z rozszerzeniem bat.
FOR /D %i IN (*.*) DO @echo %i
Zamiast plików wyszukiwane są katalogi.
FOR /L %i IN (1,1,5) do ECHO %i
PPętla generuje kolejne liczby całkowite od 1, do 5, co 1
FOR /F %i IN (plik.txt) DO ECHO %i
Wyświetlane są kolejne wiersze z plikubr>
Skrypt zawierający poprzednią pętlę:
@ECHO FF
FOR %%I IN (*.*) DO ECHO %%I
ECECHO on
Zmienna sterująca pętlą - I z dwoma znakami procent.
PLIKI
Stwórz program wsadowy, który będzie tworzył 1000 plików tekstowych o następującej konstrukcji: plik000.txt do
plik999.txt
@echo off
for /L %%X n (0,1,9) do echo %%X
Pętla produkuje liczby 0..9
@echo off
for /L %%X in (0,1,9) do for /L %%Y in (0,1,9) do echo %%X%%Y
Pętla produkuje liczby 00..99. Jeśli będzie %%X %%Y,
to liczby 0 0 do 9 9 ze spacją w środku.
@echo off
for /L %%X in (0,1,9) do (
for /L %%Y in (0,1,9) do (
for /L %%Z in (0,1,9) do (
echo %%X%%Y%%Z
)
)
)
UWAGA - w pętlach zastosowano instrukcję grupującą - nawiasy, które umożliwiają wykonanie w pętli wielu poleceń.
Zadanie to można zrealizować inaczej
zamiast polecenia ECHO %%X%%Y%%Z
wystarczy ECHO plik%%X%%Y%%Z.txt
i całe polecenie w konsoli skierować nie na ekran konsoli. ale do pliku z
rozszerzeniem TXT
TWORZENIE FOLDERÓW
FOR /F %i IN (naz.txt) DO MD FOLDER\%i
W pliku naz.txt znajdują się nazwy folderów do utworzenia (w każdym wierszu
jedna nazwa)
Polecenie odczytuje po jednym wierszu z pliku naz.txt i tworzy w folderze FOLDER
nowy folder o odczytanej nazwie.
ŁĄCZENIE PLIKÓW
Utwórz program wsadowy, który połączy w jeden plik pliki podane jako
parametry. Wykorzystaj polecenie SHIFT i sprawdź, kiedy pierwszy parametr będzie
pusty.
EGZAMIN
Przygotuj program wsadowy, który utworzy folder EGZAMIN, a w środku kolejne
foldery, których lista znajduje się w pliku tekstowym podanym jako parametr.
Skorzystaj z polecenia FOR /F...
EGZAMIN2
Przygotuj program wsadowy, który utworzy folder EGZAMIN, a w środku foldery
z kolejnymi numerami 0-9. Skorzystaj z polecenia FOR /L... Po utworzeniu foldera
skopiuj do niego wszystkie pliki, znajdujące się w folderze, którego nazwę
podajemy jako parametr.
EGZAMIN3
Przygotuj program wsadowy, który skopiuje wszystkie pliki znajdujące się w
osobnych folderach, foldera podanego jako parametr, do foldera EGZAMIN.
Skorzystaj z polecenia FOR /D... Aby pliki uczniów się nie pomieszały, do każdej
kopiowanej nazwy pliku dopisz na początku nazwę foldera, z którego plik jest
kopiowany. Na przykład plik TEST.TXT znajduje się w folderze WL, to skopiowany
plik powinien mieć nazwę WL_TEST.TXT.