我是批处理的新手,我正在尝试制作速度/距离/时间计算器。代码工作正常,直到我试图回应总数。这是我的代码:
@ECHO off
COLOR 0f
TITLE Speed Distance Time Calculator
:BEGIN
SET /P type="Calculate speed/distance/time? (S/D/T): "
CLS
IF /I "%type%"=="s" (
SET /P distance="Distance: "
CLS
SET /P dUnits="Distance units (mile/m/km):"
CLS
SET /P time="Time: "
CLS
SET /P tUnits="Time units (h/s):"
CLS
SET total=%distance%/%time%
ECHO %total%
)
输出:
ECHO is off
我环顾四周寻找答案并试过“enabledelayedexpansion”,但它没有用。
答案 0 :(得分:1)
要使用SET
命令在批处理文件中进行除法(或任何算术运算),您必须指定/A
开关。此外,您需要打开延迟变量扩展,因为您将动态更改批处理文件中的变量,然后使用它们。
使用延迟展开变量时,您必须使用!
而不是%
来引用它们。感叹号告诉命令处理器您希望延迟特定变量的扩展。任何使用百分号的变量都将在初始分析时扩展。
因此,在批处理文件的顶部,在@ECHO off
下,启用延迟展开:
SETLOCAL EnableDelayedExpansion
然后执行如下计算:
SET /A total=!distance!/!time!
ECHO !total!