Batch file 为什么算术在CMD中不起作用
我刚开始用CMD编写代码,就遇到了这个问题!如何打印带有变量和变量的答案?还是这是一个愚蠢的错误 文件_1.bat 标题将被称为基本算术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
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上,而是在Windowscmd
上。你可能会感兴趣。等等,我朋友告诉我这是一个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上,而是在Windowscmd
上。你可能会感兴趣。等等,我朋友告诉我这是一个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在本例中的作用的评论。