带变量的ECHO命令

时间:2016-01-10 11:44:25

标签: batch-file echo

我是批处理的新手,我正在尝试制作速度/距离/时间计算器。代码工作正常,直到我试图回应总数。这是我的代码:

@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”,但它没有用。

1 个答案:

答案 0 :(得分:1)

要使用SET命令在批处理文件中进行除法(或任何算术运算),您必须指定/A开关。此外,您需要打开延迟变量扩展,因为您将动态更改批处理文件中的变量,然后使用它们。

使用延迟展开变量时,您必须使用!而不是%来引用它们。感叹号告诉命令处理器您希望延迟特定变量的扩展。任何使用百分号的变量都将在初始分析时扩展。

因此,在批处理文件的顶部,在@ECHO off下,启用延迟展开:

SETLOCAL EnableDelayedExpansion

然后执行如下计算:

SET /A total=!distance!/!time!
ECHO !total!