Windows 如何检查输入是否为整数?
简单地说,我需要检查变量是否是数字。我意识到以下能力:Windows 如何检查输入是否为整数?,windows,batch-file,cmd,Windows,Batch File,Cmd,简单地说,我需要检查变量是否是数字。我意识到以下能力: set /a variable1=%variable% 将非数字字符串设置为0,但我需要能够将0作为整数以及负数 这将经常运行,因此最好使用快速脚本。我尝试将变量回送到.txt中,如果检测到0-9以外的任何内容,则使用for循环进行扫描并返回错误,但脚本运行时间过长,坦率地说是一团糟。 你可以采取一些措施来消除这种影响。删除所有数字。如果有剩余,则它不是整数。并不是说这是完美的,但这是朝着正确方向迈出的一步 set "tempvar=
set /a variable1=%variable%
将非数字字符串设置为0,但我需要能够将0作为整数以及负数
这将经常运行,因此最好使用快速脚本。我尝试将变量回送到.txt中,如果检测到0-9以外的任何内容,则使用for循环进行扫描并返回错误,但脚本运行时间过长,坦率地说是一团糟。
你可以采取一些措施来消除这种影响。删除所有数字。如果有剩余,则它不是整数。并不是说这是完美的,但这是朝着正确方向迈出的一步
set "tempvar="
FOR /F "tokens=* delims=-0123456789" %%G IN ("%variable1%") DO SET "tempvar=%%G"
IF DEFINED tempvar echo NOT AN INTEGER
试试这个。一些特殊的符号,比如但是,code>和^
可能会导致问题。
您还可以使用findstr:
@echo off
:isIntererFindstr input [returnVar]
setlocal enableDelayedexpansion
set "input=%~1"
if "!input:~0,1!" equ "-" (
set "input=!input:~1!"
) else (
if "!input:~0,1!" equ "+" set "input=!input:~1!"
)
echo !input!|findstr /r "[^0-9]" >nul 2>&1
if %errorlevel% equ 0 (
set result=false
) else (
set result=true
)
endlocal & if "%~2" neq "" (set %~2=%result%) else echo %result%
如前所述
最容易使用的数字应为:
IF %1 NEQ +%1 echo Notnumeric!
如果也要考虑负数(连字符),这将起作用
SET number=%1
if %1 EQU +%1 echo positive number
if %1==-%number:-=% echo negative number
从中了解到,您是否可以编辑问题以包含用于检查用户是否提供整数的代码?您可能已经接近了。请转到谷歌并键入:批处理文件是数字的-或者在本页右上角的搜索栏中执行此操作…您是否尝试过类似的操作,或者也尝试过其中提到的操作?我非常确定“set/a v=%v%”也可以处理负值。所以几乎任何数字都会返回除零之外的其他值。那么,为什么不先测试零,然后将其嵌套在if语句中呢?所以逻辑是这样的。。。(如果为零,则为数字,否则(如果设置/a v=%v%-->零,则为非数字,否则为数字))到一个几乎相同的问题可以解决您的问题。我的意思是,这是2年前的问题,但这是一个很好的解决方案。
SET number=%1
if %1 EQU +%1 echo positive number
if %1==-%number:-=% echo negative number