如何在第二个参数为3的情况下将IF条件设置为真时用点分隔。 我试过(这应该是任何字符,不只是数字),但不工作。特定格式的BATCH IF条件
IF /I "%2"=="*.*.*" SET VAR=%2
我怎样才能做到这一点?
如何在第二个参数为3的情况下将IF条件设置为真时用点分隔。 我试过(这应该是任何字符,不只是数字),但不工作。特定格式的BATCH IF条件
IF /I "%2"=="*.*.*" SET VAR=%2
我怎样才能做到这一点?
@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”除外),后面跟着任意数量的数字字符。
IF
不支持占位符,所以你必须模仿他们在字符串
\.
点的第一个位置
echo %2||findstr /R "^[0-9]\.[0-9]\.[0-9]$" && (set "var=%2") || (echo no match)
^
开始。 (.
仅将是 “任何字符”)
[0-9]
任何数量(也可以使用或例如[1-9]如果需要的话)的字符串
$
端。
&&
如果前一个命令(FINDSTR)成功,那么......
||
如果前一个命令(FINDSTR),那么失败...
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和测试有效结束值
'if'不支持占位符。它从字面上搜索“star-dot-star-dot-star”。你是0到9之间的数字还是10或更大? – Stephan 2014-12-07 09:24:19
只是[0-9]一个字符,我认为这可以用FOR循环完成,但我不知道如何。 – Snoop05 2014-12-07 09:26:13