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