Skrypt wsadowy - debugowanie

Bardzo często możesz napotkać problemy podczas uruchamiania plików wsadowych i najczęściej będziesz musiał zdebugować swoje pliki wsadowe w taki lub inny 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, 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ą używającą 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 dane wyjściowe „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 systemu 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