можно запустить / вызвать функцию в командном файле непосредственно из CMD? - PullRequest
0 голосов
/ 07 февраля 2019

Как я могу запустить / вызвать одну функцию, которая находится в командном файле непосредственно из cmd?У меня есть этот файл test.bat, который содержит некоторую функцию, и я хочу вызвать / запустить одну из функций без запуска всего файла.Возможно ли это?

@echo off
:plus
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%

REM goto :eof
:sub
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%

REM goto :eof
:mul
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

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

После того, как Герхард упомянул самый общий способ, который я лично упростил бы это следующим образом:

@echo off

if "%1" == "" (echo The file was either run regardless or from cmd without arguments. & exit /b 1)

:: This portion will use the paramter sent from cmd window.
call :%~1
goto :END

:plus
echo Welcome to additions (n+n=n)
set /p "input1=first input: "
set /p "input2=second input: "
set /a "ans=input1+input2"
echo %input1% + %input2% = %ans%

:sub
echo Welcome to subtractions (n-n=n)
set /p "input1=first input: "
set /p "input2=second input: "
set /a "ans=input1-input2""
echo %input1% - %input2% = %ans%

:mul
echo Welcome to muptiplications (n*n=n)
set /p "input1=first input: "
set /p "input2=second input: "
set /a "ans=input1*input2"
echo %input1% * %input2% = %ans%

:END
pause
exit /b 0

, который, как мне кажется, намного более сортировочный, есть другой способ сделать это:

  • Создайте пакетный файл с именем additions.bat, который будет иметь содержимое:
@call yourfile.bat "plus"
  • Создайте пакетный файл с именем subtractions.bat, который будет содержать:
@call yourfile.bat "sub"
  • Создайте пакетный файл с именем muptiplications.bat, который будет иметь содержимое:

@call yourfile.bat "mul"

Это будет намного проще, я думаюпросто дважды щелкните по нужному пакетному файлу, и вы получите то, что хотите.

0 голосов
/ 07 февраля 2019

Я предполагаю, что вы хотите что-то вроде этого?

(Обратите внимание, вы можете изменить 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"

, что будет иметь точно такой же результат.

ЗдесьЭто скриншот этого точного сценария, который я тестировал.

Extract of commands

В качестве примечания можно также использовать set /p, чтобы подсказать пользователю, чтодля запуска, затем просто соответствующим образом вызовите метку. Вам просто нужно запустить командный файл, и вам не нужно каждый раз запускать его из cmd.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...