2014-12-07 147 views
0

如何在第二个参数为3的情况下将IF条件设置为真时用点分隔。 我试过(这应该是任何字符,不只是数字),但不工作。特定格式的BATCH IF条件

IF /I "%2"=="*.*.*" SET VAR=%2

我怎样才能做到这一点?

+0

'if'不支持占位符。它从字面上搜索“star-dot-star-dot-star”。你是0到9之间的数字还是10或更大? – Stephan 2014-12-07 09:24:19

+0

只是[0-9]一个字符,我认为这可以用FOR循环完成,但我不知道如何。 – Snoop05 2014-12-07 09:26:13

回答

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”除外),后面跟着任意数量的数字字符。

0

IF不支持占位符,所以你必须模仿他们在字符串

\.点的第一个位置

echo %2||findstr /R "^[0-9]\.[0-9]\.[0-9]$" && (set "var=%2") || (echo no match) 

^开始。 (.仅将是 “任何字符”)

[0-9]任何数量(也可以使用或例如[1-9]如果需要的话)的字符串

$端。

&&如果前一个命令(FINDSTR)成功,那么......

||如果前一个命令(FINDSTR),那么失败...

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和测试有效结束值