如何在批处理文件中进行数学运算

时间:2013-11-14 22:38:54

标签: batch-file

我一直在处理我希望工作的批处理代码的麻烦,但不要......

以下是我写的......

@echo off
cls

:loop
set /p "input=Input a number: "
set /a "number=%input%" 2>nul
REM check if input valid
if "%input%" NEQ "%number%" (
cls
Echo Please Enter a valid number! &Echo.&Echo.
goto :loop
)
Set /a Even=number%%2
if %Even% EQU 0 (
Echo Substituting Even Number in: x / 2
Echo set /p"=(%number%) / 2 = "
set /a answer=number/2
) Else (
Echo Substituting Odd Number in: 3x - 1
<nul set /p"=3(%number%)-1 = "
set /a answer=number*3
set /a answer=answer-1
)
Echo %answer%
Echo.
Echo.

goto :loop
Echo Unexpected Error . . .
pause
Exit

每当我在控制台中输入一个数字时,它就像我想要的那样进行数学计算,但打印数字-1,每次输入另一个数字时,数字变为-2,-3,-4等等。

1 个答案:

答案 0 :(得分:1)

setlocal enableextensions后面的@echo off放置@echo off setlocal enableextensions cls ,例如

!var!

另外,我认为您还需要使用延迟变量扩展(通常用@echo off setlocal enableextensions enabledelayedexpansion cls :loop set /p "input=Input a number: " set /a number=!input! 2>nul REM check if input valid if "!input!" NEQ "!number!" ( cls Echo Please Enter a valid number! Echo. Echo. goto :loop ) REM Make sure that it is an integer put in (just in case) set /a int=!number! %% 1 if "!input!" NEQ "!int!" ( cls Echo Please Enter a valid number! Echo. Echo. goto :loop ) Set /a Even=!number! %% 2 if !Even! EQU 0 ( Echo Substituting Even Number in: x / 2 set /a answer=!number! / 2 ) Else ( Echo Substituting Odd Number in: 3x - 1 set /a answer=!number! * 3 - 1 ) Echo !answer! Echo. Echo. goto :loop 表示),这会将您的脚本更改为以下内容:

set /p

我还想指出我还修复了一些其他错误({{1}}根本没有任何用处,特别是在使用它的地方,你也需要模数来找到偶数/奇数)。

相关问题