Batch file 带有变量的ECHO命令
我是批处理新手,我正在尝试制作一个速度/距离/时间计算器。代码工作正常,直到我尝试回显总数。这是我的密码:Batch file 带有变量的ECHO命令,batch-file,echo,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 /
@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”,但它不起作用。要使用SET
命令在批处理文件中进行除法(或任何算术运算),必须指定/a
开关。此外,您还需要启用延迟变量扩展,因为您将动态更改批处理文件中的变量,然后使用它们
使用延迟扩展变量时,必须使用引用它们代码>而不是%
。感叹号告诉命令处理器您希望该特定变量的扩展延迟。任何使用百分号的变量都将在初始解析时展开
因此,在批处理文件顶部的@ECHO off
下,启用延迟扩展:
SETLOCAL EnableDelayedExpansion
然后执行如下计算:
SET /A total=!distance!/!time!
ECHO !total!
检查变量。其中一个可能为空或包含无效字符。使用@echo ON
运行脚本以查看任何错误消息(以及实际执行的命令)。很抱歉,我忘了您必须启用延迟扩展。它对我有效,因为我只运行了一次,设置了我当前环境中的所有变量,所以当我第二次运行它时,所有的变量都已经存在了!我更新了我的答案。嘿,一个友好的评论,你不必担心成批地大写命令,也不必担心像eq
或/p
这样的参数。除非你愿意,否则你就这么做。继续友好的评论,我以前用小写字母写所有命令和命令部分,用大写字母写所有选项(以便于区分)。我还使用“camelCase”表示variableName。