Korzystam z następującej pętli w pliku wsadowym, aby indywidualnie wywoływać „funkcje” w pliku, zaczynając od wyświetlania tekstu, a kończąc sprawdzaniem i wyświetlaniem poziomu błędu.
Wywołanie funkcji pętli wykorzystuje 2 zmienne.
- nazwa funkcji podrzędnej, która ma zostać wywołana
- tekst do wyświetlenia na ekranie dla wygody użytkownika
Tak wyglądają te linie telefoniczne
call :loop BackupDatabase "Taking database backup"
call :loop StopBGService "Stopping the background service"
To jest sama funkcja pętli
:loop
:retry
echo %~2
call :%~1
IF %ERRORLEVEL% NEQ 0 (
SET ERRORLEV=%ERRORLEVEL%
ECHO Executing %~2 failed
ECHO Error Level: %ERRORLEV%
ECHO.
set /p ans=Do you want to retry %~2 [y/n]^>
if "%ans%"== "y" goto :retry
if "%ans%"== "Y" goto :retry
)
GOTO :EOF
Poniżej znajdziesz funkcje wywoływane przez każdą pętlę
:BackupDatabase
Perform database backup commands
GOTO :EOF
:StopBGService
Perform stop background service commands
GOTO :EOF
Problem, który mam, polega na tym, że gdy „pętla” nie działa poprawnie, skrypt powinien zapytać, czy wymagana jest ponowna próba. Za pierwszym razem, gdy tak się stanie, jeśli wpiszesz „n”, ponawia próbę? Czytałem w kółko skrypt pętli i nie mogę powiedzieć, dlaczego tak jest. Jeśli ktoś może to naprawić, byłaby to świetna pomoc lub ktoś mógłby wskazać lepszy sposób robienia tego, co próbuję osiągnąć.
choicezamiastset?