batch-file - 批处理文件未返回预期文本
问题描述
我正在制作一个看起来像这样的批处理文件:
set /a "number1"="%1"
set /a "number2"="%2"
if "%number1%" GTR "%number2%" echo %number1% Is Greater Than %number2%. & exit /b
if "%number1%" LSS "%number2%" echo %number1% Is Less Than %number2%. & exit /b
if "%number1%" EQU "%number2%" echo %number1% Is Equal To %number2%. & exit /b
当我像这样从 cmd 运行它时:
Calc.bat 4 10
它说 4 大于 10。我该如何解决它,为什么会发生这种情况?
解决方案
您应该摆脱所有这些(双引号)字符中的绝大多数"
,它们使比较成为字典式的,而不是数字的:
@echo off
set /a "number1=%1"
set /a "number2=%2"
if %number1% GTR %number2% echo %number1% Is Greater Than %number2%. & exit /b
if %number1% LSS %number2% echo %number1% Is Less Than %number2%. & exit /b
if %number1% EQU %number2% echo %number1% Is Equal To %number2%. & exit /b
结果:
C:\Users\pax> testprog.cmd 4 10
4 Is Less Than 10.
推荐阅读
- c# - 事件存储连接已关闭
- cloud-foundry - Cloud Foundry:在 buildpack 之前运行自定义命令
- c# - 客户端机器上的应用程序,直接从服务器调用数据库操作
- reactjs - next.js - getInitialProps 在组件中不起作用
- css - 如何为小于 600 的小屏幕创建响应表
- database - 如何在一个产品中获取多个相关产品
- azure-pipelines - 通过 webhook 触发 azure 管道?
- git - 使用 Terraform 创建实例时,有没有办法在 ec2 实例中克隆私有 git 存储库?
- python - 我如何从多对多字段中删除朋友
- typescript - 不编译为什么你不能识别运营商这个错误