Когда я запускаю этот файл, я выбираю вариант 1, а затем снова вариант 1. Он запускает команду SFC / SCANNOW. Но когда я нажимаю Ctrl + C и начинаю сначала, он застревает в тот момент, когда он хочет запустить команду sfc / scannow.

  @echo off
cls

echo Welkom, Ik ben de ASCI Reparatie Tool.
echo Wat wil je doen?
echo 1. SFC 
echo 2. Bootrec
echo 3. Ping
echo 4. Robocopy
echo 5. 
echo 6.
echo 7.
echo 8.
echo 9.
CHOICE /C 123456789 /N /M "input nummer"

IF ERRORLEVEL 1 SET KEUZE=GOTO SFC
IF ERRORLEVEL 2 SET KEUZE=GOTO bootrec
IF ERRORLEVEL 3 SET KEUZE=3
IF ERRORLEVEL 4 SET KEUZE=4
IF ERRORLEVEL 5 SET KEUZE=5
IF ERRORLEVEL 6 SET KEUZE=6
IF ERRORLEVEL 7 SET KEUZE=7
IF ERRORLEVEL 8 SET KEUZE=8
IF ERRORLEVEL 9 SET KEUZE=9

:SFC 
cls
echo Je wilt dus dde SFC command gebruiken.
echo Welke parameter wil je gebruiken?
echo 1. /scannow 
echo 2. /verifyonly
echo 3. /scanfile
echo 4. /verifyfile
echo 5. /help
CHOICE /C 12345 /N /M "Input nummer"

IF ERRORLEVEL 1 SET KEUZE=GOTO scan
IF ERRORLEVEL 2 SET KEUZE=GOTO only
IF ERRORLEVEL 3 SET KEUZE=GOTO file
IF ERRORLEVEL 4 SET KEUZE=GOTO verify
IF ERRORLEVEL 5 SET KEUZE=GOTO help

:scan

sfc /SCANNOW

pause

exit

:only

sfc /verifyonly

pause

exit

:file

sfc /scanfile

pause

exit

:verify

sfc /verifyfile

pause

exit

:help

sfc /help

pause

exit

PS Это мой первый скрипт, и я не очень хорошо разбираюсь в создании командного файла.

1 ответ1

1

При использовании CHOICE и IF ERRORLEVEL вы должны выполнять проверки уровня ошибки в порядке убывания, поскольку команда IF будет истинной, если значение больше или равно числу, указанному в проверке IF ERRORLEVEL .

 @echo off
 cls

 echo Welkom, Ik ben de ASCI Reparatie Tool.
 echo Wat wil je doen?
 echo 1. SFC 
 echo 2. Bootrec
 echo 3. Ping
 echo 4. Robocopy
 echo 5. 
 echo 6.
 echo 7.
 echo 8.
 echo 9.
 CHOICE /C 123456789 /N /M "input nummer"

 IF ERRORLEVEL 9 SET KEUZE=9 &GOTO :EOF
 IF ERRORLEVEL 8 SET KEUZE=8 &GOTO :EOF
 IF ERRORLEVEL 7 SET KEUZE=7 &GOTO :EOF
 IF ERRORLEVEL 6 SET KEUZE=6 &GOTO :EOF
 IF ERRORLEVEL 5 SET KEUZE=5 &GOTO :EOF
 IF ERRORLEVEL 4 SET KEUZE=4 &GOTO :EOF
 IF ERRORLEVEL 3 SET KEUZE=3 &GOTO :EOF
 IF ERRORLEVEL 2 GOTO bootrec
 IF ERRORLEVEL 1 GOTO SFC
 GOTO :EOF

 :SFC 
 cls
 echo Je wilt dus dde SFC command gebruiken.
 echo Welke parameter wil je gebruiken?
 echo 1. /scannow 
 echo 2. /verifyonly
 echo 3. /scanfile
 echo 4. /verifyfile
 echo 5. /help
 CHOICE /C 12345 /N /M "Input nummer"

 IF ERRORLEVEL 5 GOTO help
 IF ERRORLEVEL 4 GOTO verify
 IF ERRORLEVEL 3 GOTO file
 IF ERRORLEVEL 2 GOTO only
 IF ERRORLEVEL 1 GOTO scan

 :scan
 sfc /SCANNOW
 pause
 exit

 :only
 sfc /verifyonly
 pause
 exit

 :file
 sfc /scanfile
 pause
 exit

 :verify
 sfc /verifyfile
 pause
 exit

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .