batch-file - 根据数字范围显示单个输出(if, goto)
问题描述
有人可以向我解释为什么这不会只显示if
命令中给出的范围之间的数字的结果吗?无论我尝试了什么,它都会不断显示所有结果,尽管给出了范围。我已经看过这个答案,但它不起作用。例如,如果我写if %ans% LEQ 8 GOTO :2
,它将显示所有小于 8 的数字的所有结果,而不仅仅是 5 到 8 之间(这是我试图显示的)。
set num1=%1
set num2=%2
set /a ans=num1+num2
if %ans% LEQ 4 GOTO :1
if %ans% GTR 4 if %ans% LEQ 8 GOTO :2
if %ans% GTR 8 if %ans% LEQ 16 GOTO :3
if %ans% GRT 16 if %ans% LEQ 32 GOTO :4
:1
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /30 255.255.255.252 4
echo.
:2
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /29 255.255.255.248 8
echo.
:3
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /28 255.255.255.240 16
echo.
:4
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /27 255.255.255.224 32
echo.
解决方案
这是我会这样做的方式:
@echo off
set /a ans=%1+%2
for %%n in (4 8 16 32) do if %ans% LEQ %%n GOTO :%%n
echo %ans% is greater than 32
goto :EOF
:4
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /30 255.255.255.252 4
echo.
goto :EOF
:8
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /29 255.255.255.248 8
echo.
goto :EOF
:16
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /28 255.255.255.240 16
echo.
goto :EOF
:32
echo # Host Req # Mask # Netmask # Max Supported #
echo %ans% /27 255.255.255.224 32
echo.
goto :EOF
推荐阅读
- java - C++ 与 Java 的输出差异
- php - PHP,使用包含下划线的变量名创建一个 mySQL 表
- apache - 如何在 Nuxt 路由器中手动生成带有 .htaccess 的 404 页面回退的页面
- c++ - wxWidgets wxThreadHelper 示例问题
- python - 无法进入 tkinter,python
- json - 从包含多个 json 数据的文件中提取单个 json 数据并使其紧凑
- flutter - 如何使聊天气泡形状使用路径?
- linux - libusb bulk 的最大传输大小是多少?
- objective-c - 将TV菜单按钮设置为返回一个屏幕
- javascript - 为什么javascript不能注册getSignedUrl()(云函数)?