Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 带有变量的ECHO命令_Batch File_Echo - Fatal编程技术网

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。