Batch file 为什么算术在CMD中不起作用

Batch file 为什么算术在CMD中不起作用,batch-file,cmd,Batch File,Cmd,我刚开始用CMD编写代码,就遇到了这个问题!如何打印带有变量和变量的答案?还是这是一个愚蠢的错误 文件_1.bat 标题将被称为基本算术 title Basic Arithmetic 我的代码的主要部分: set /p first= First Number: set /p sec= Second Number: set /a ans=first+sec 为了防止CMD在答案打印出来后关闭 set /p z= Finish! 您的代码没有问题, 如果您在打开的cmd窗口中输入这些命令,s

我刚开始用CMD编写代码,就遇到了这个问题!如何打印带有变量和变量的答案?还是这是一个愚蠢的错误

文件_1.bat

标题将被称为基本算术

title Basic Arithmetic
我的代码的主要部分:

set /p first= First Number:
set /p sec= Second Number:

set /a ans=first+sec
为了防止CMD在答案打印出来后关闭

set /p z= Finish!

您的代码没有问题,
如果您在打开的cmd窗口中输入这些命令,
set/a
会回显计算结果

> set /p first=
1
> set /p second=
3
> set /a ans=first+second
4
在批处理中,它不会-它简单地将结果存储到变量
ans

要获取变量
ans
的内容,请选择
echo%ans%
set ans

> Echo %ans%
4

> set ans
ans=4

您的代码没有问题,
如果您在打开的cmd窗口中输入这些命令,
set/a
会回显计算结果

> set /p first=
1
> set /p second=
3
> set /a ans=first+second
4
在批处理中,它不会-它简单地将结果存储到变量
ans

要获取变量
ans
的内容,请选择
echo%ans%
set ans

> Echo %ans%
4

> set ans
ans=4

虽然这不是通常的操作系统配置,但有一件事可能会使代码失败,那就是禁用命令扩展,这会使
set/p
set/a
被当作普通的
set
命令处理

您可以尝试在批处理文件的开头包含一个
setlocal enableextensions
,以确保您的工作环境已按需要配置

@echo关闭
setlocal enableextensions disabledelayedexpansion
标题基本算术
set/p first=第一个编号:
设置/p秒=第二个数字:
设置/a ans=第一次+第二次
答案是%ans%
暂停

虽然这不是常见的操作系统配置,但有一件事可能会使代码失败,那就是禁用命令扩展,这将使
set/p
set/a
被当作普通的
set
命令处理

您可以尝试在批处理文件的开头包含一个
setlocal enableextensions
,以确保您的工作环境已按需要配置

@echo关闭
setlocal enableextensions disabledelayedexpansion
标题基本算术
set/p first=第一个编号:
设置/p秒=第二个数字:
设置/a ans=第一次+第二次
答案是%ans%
暂停

echo%ans%
。但是在DOS中没有
set/p
set/a
。如果您没有收到语法错误,那么您不是在DOS上,而是在Windows
cmd
上。你可能会感兴趣。等等,我朋友告诉我这是一个DOS?一个常见的误解
cmd
看起来非常像
DOS
,但非常不同。(尽管它们都共享大部分命令及其语法)。在Win95中,它被称为
DOS框
(实际上是DOS)。在较新版本的Windows中,它改为
cmd
,但大多数人保留了“Dos框”的名称。如果使用
/?
设置/?
)调用命令,在大多数命令中,您会注意到一行“如果命令扩展已启用…”。该行之后的所有内容都与DOS不兼容。@Stephan MS-DOS不会对问题中给出的命令给出错误。它将创建名为
/p first
/a ans
echo%ans%
的变量。但是在DOS中没有
set/p
set/a
。如果您没有收到语法错误,那么您不是在DOS上,而是在Windows
cmd
上。你可能会感兴趣。等等,我朋友告诉我这是一个DOS?一个常见的误解
cmd
看起来非常像
DOS
,但非常不同。(尽管它们都共享大部分命令及其语法)。在Win95中,它被称为
DOS框
(实际上是DOS)。在较新版本的Windows中,它改为
cmd
,但大多数人保留了“Dos框”的名称。如果使用
/?
设置/?
)调用命令,在大多数命令中,您会注意到一行“如果命令扩展已启用…”。该行之后的所有内容都与DOS不兼容。@Stephan MS-DOS不会对问题中给出的命令给出错误。它将创建名为
/p first
/a ans
的变量。
cmd/?
帮助屏幕非常清晰:“默认情况下启用命令扩展名”。除非注册表被专门修改为禁用命令扩展,否则永远不需要使用
setlocal EnableExtensions
,但我不知道有哪台计算机进行了这样的修改…@Aacini,我见过。我同意您的意见,默认配置是启用
,但这是解释
/p first
变量名的最简单方法,除非OP运行NT,而
set/p
不存在。OP说有一个名为
/p first
的变量?这是@RossRidge对MS-DOS在这种情况下的操作的评论。
cmd/?
帮助屏幕非常清楚:“命令扩展默认启用”。除非注册表被专门修改为禁用命令扩展,否则永远不需要使用
setlocal EnableExtensions
,但我不知道有哪台计算机进行了这样的修改…@Aacini,我见过。我同意您的意见,默认配置是启用
,但这是解释
/p first
变量名的最简单方法,除非OP运行NT,而
set/p
不存在。OP说有一个名为
/p first
的变量?这是@RossRidge关于MS-DOS在本例中的作用的评论。