Как я могу обработать ошибки и продолжить, чтобы LABEL отсутствовал в GOTO? - PullRequest
0 голосов
/ 27 сентября 2018

Я пытаюсь обработать отсутствующие ошибки метки в командном файле (Windows 10).Мой пакетный файл в настоящее время использует GOTO на основе переданного параметра, например:

MYSCRIPT .bat choice1

Я пытаюсь что-то сделатьпростой с простым синтаксисом, так что вам не нужно включать сложные меню или списки.Я надеялся сделать что-то простое в командном файле, например:

GOTO% 1%

Проблема возникает, когда выбор сделан с ошибкой, отсутствует (не найдено). Я попробовал некоторые примерыза аналогичную обработку, которую я нашел на этом сайте, но у меня либо неправильная ситуация, либо я просто не совсем понимаю, как ее применить.

Я уверен, что по крайней мере один человек будет ругать меня за то, что я не сделалэто в PowerShell или VBasic или что-то еще.Так что я буду идти вперед и заранее извиниться.Честно говоря, я не знаю, как делать то, что я хочу делать в любом из них.(Некоторые скажут, что я не знаю, как это сделать в BATCH, иначе я бы не стал просить о помощи.)

Я попытался использовать «FOR» для анализа файла для экземпляраярлык, а также «ЕСЛИ ОШИБКА 1», но кажется, что это не ветвление, куда нужно идти.Например, если метка найдена, перейдите туда;если нет, вернитесь к началу, чтобы дать возможность ввести что-то еще.

Заранее благодарим за любые идеи, которые могут быть предложены.

1 Ответ

0 голосов
/ 27 сентября 2018

Нет способа обработать эту ошибку и продолжить с командой goto;просто с call:

@echo off
setlocal EnableDelayedExpansion

call :%1 2>NUL
if errorlevel 1 echo Error: label "%1" does not exist
goto :EOF

:one
echo Section one
exit /B

:two
echo Section two
exit /B
...