Кажется, что /?
просто пропущен for %%i in (%*)
, но это универсальная функция цикла for, он пытается найти файл, который соответствует /?
, что не удастся.
Вы не можете использовать ?
или *
в "нормальном" цикле for без изменения результата.
Вы можете использовать команду SHIFT
для доступа ко всем вашим параметрам.
:parameterLoop
if "%~1"=="/?" call :help
if "%~1"=="-h" call :help
if "%~1"=="-o" call :other
shift
if not "%~1"=="" goto :parameterLoop
Если вы также хотите отобразить выбранную опцию, у вас возникла проблема с командой echo, так как обычно вместо справки /?
.
Вы можете избежать этого, используя echo(%1
вместо echo %1
.