当第二个参数是用点分隔的3个数字时,如何形成IF条件为真。 我试过这个(这应该适用于任何角色,而不仅仅是数字),但不能正常工作。
IF /I "%2"=="*.*.*" SET VAR=%2
我该怎么做?
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "leadnum=123456789"
SET "anynum=%leadnum%0"
FOR %%i IN (
1.2.3
123.456.789
012.345.678
12.3
12
12a.345.678
12.34.56.78
12.34.777f
12.34.
12.34.56.
) DO (
ECHO %%i|FINDSTR /b /e "[%leadnum%][%anynum%]*\.[%leadnum%][%anynum%]*\.[%leadnum%][%anynum%]*" >NUL
IF ERRORLEVEL 1 (ECHO %%i is NOT of format) ELSE (ECHO %%i is IN format)
)
GOTO :EOF
这是一个演示。你不能说出一个数字是什么,所以我随意决定将一个数字定义为一个以数字字符开头的字符串(除了' 0')之后是任意数字的数字字符。
答案 1 :(得分:0)
IF
不支持占位符,因此您必须模仿它们
echo %2||findstr /R "^[0-9]\.[0-9]\.[0-9]$" && (set "var=%2") || (echo no match)
^
从字符串
\.
一个点。 (.
只会是"任何字符")
[0-9]
任何数字(如果需要,您也可以使用或示例[1-9])
$
字符串结束。
&&
如果上一个命令(findstr)成功,那么......
||
如果上一个命令(findstr)失败,那么......
答案 2 :(得分:0)
set "value=%2" & setlocal enabledelayedexpansion
for %%a in (1 2 3 4 5 6 7 8 9) do set "value=!value:%%a=0!"
endlocal & if "%value%"=="0.0.0" ( set "var=%2" ) else ( set "var=" )
echo(%var%
这只是用0替换所有数字并测试有效的结束值