Я предполагаю, что вы хотите что-то вроде этого?
(Обратите внимание, вы можете изменить call :%~1
на goto :%~1
, если вы хотите получить доступ к ярлыкам, например, goto :eof
@echo off
:: This portion will use the paramter sent from cmd window.
call :%~1
goto :eof
:plus
echo Welcome to additions (n+n=n)
set /p input1=first input:
set /p input2=second input:
set /a n1=input1
set /a n2=input2
set /a ans=%n1%+%n2%
echo %input1%+%input2% = %ans%
goto :eof
:sub
echo Welcome to subtractions (n-n=n)
set /p input1=first input:
set /p input2=second input:
set /a n1=input1
set /a n2=input2
set /a ans=%n1%-%n2%
echo %input1% - %input2% = %ans%
goto :eof
:mul
echo Welcome to muptiplications (n*n=n)
set /p input1=first input:
set /p input2=second input:
set /a n1=input1
set /a n2=input2
set /a ans=%n1%*%n2%
echo %input1% * %input2% = %ans%
:eof
pause
Чтобы затем использовать его, откройте cmd
и введите (при условии, что ваш файл называется mybat.cmd
:
mybat.cmd mul
, который в свою очередь в партии вызовет метку :mul
Тот факт, что мы используем %~1
вместо %1
, заключается в том, что он также может быть запущен как:
mybat.cmd "mul"
, что будет иметь точно такой же результат.
ЗдесьЭто скриншот этого точного сценария, который я тестировал.
В качестве примечания можно также использовать set /p
, чтобы подсказать пользователю, чтодля запуска, затем просто соответствующим образом вызовите метку. Вам просто нужно запустить командный файл, и вам не нужно каждый раз запускать его из cmd.