首页 > 解决方案 > 批处理文件未返回预期文本

问题描述

我正在制作一个看起来像这样的批处理文件:

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。我该如何解决它,为什么会发生这种情况?

标签: batch-filearguments

解决方案


您应该摆脱所有这些(双引号)字符中的绝大多数",它们使比较成为字典式的,而不是数字的:

@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.

推荐阅读