首页 > 解决方案 > 启动批处理文件时如何获取用户输入以及如何将输入分成不同的变量

问题描述

我正在尝试学习如何制作批处理文件,并决定制作一个简单的计算器,我希望它在启动时接受用户输入,但我不知道如何使它工作。我的意思是我写: calc 25 * 78 它输出我的结果而无需再次询问论点。

我编码它的方式我需要将参数分开,也就是:每个数字和运算符都有自己的变量,到目前为止我能够做到这一点的唯一方法是数字是否设置了长度。

这是我的代码以防万一:

@echo off

set /p Action= podaj dzialanie 

set number1= %action:~2,1%
set number2= %action:~4,1%

set operation= %action:~0,1%

set /a result= number1 %operation% number2 
echo %number% %operation% %number2%=%result%

标签: batch-file

解决方案


我不确定我是否理解您打算如何使用该脚本,所以这是一个想法:

@Echo Off

:PoprosDzialanie
For %%G In (Action Integer1 Operator Integer2 Result)Do Set "%%G="
Set /P "Action=podaj dzialanie "
If Not Defined Action GoTo PoprosDzialanie
Call :AnalizujArgumenty %Action%
If ErrorLevel 1 GoTo PoprosDzialanie
Set /A result=Integer1 %Operator% Integer2 
If Defined Result (Echo %Integer1% %Operator% %Integer2% = %Result%
    "%__AppDir__%timeout.exe" 3 /NoBreak>NUL)
Rem Your script continues between this line and the next none empty line.

GoTo :EOF

:AnalizujArgumenty
If Not "%4"=="" Exit /B 1
If "%3"=="" Exit /B 1
2>NUL Set /A Integer2=%3
If ErrorLevel 1 Exit /B 1
If Not "%2"=="*" If Not "%2"=="/" If Not "%2"=="+" If Not "%2"=="-" Exit /B 1
Set "Operator=%2"
2>NUL Set /A Integer1=%1
If ErrorLevel 1 Exit /B 1
Exit /B

输入被发送到:AnalizujArgumenty分析每个参数的地方,以确保只传递了三个参数并且这些参数是有效的,即整数运算符 integer,(其中 operator 可以是 only */+-。如果这些通过分析,则定义变量并执行您的计算,否则它们未定义并重复操作提示。

如果您在脚本中要执行其他操作,可以将这些操作添加到Remarked 的位置,(您可以选择删除Remark)


推荐阅读