批处理脚本- If语句中的通配符

3

我正在编写一个批处理脚本,其中需要在一个if语句中使用通配符来匹配一个变量和一个字符串。如果匹配成功,程序将继续执行。

if "!_var!"=="str*" (

-- SOME COMMANDS --

)

这是我使用的语法,但我发现它根本不起作用。

2个回答

8
echo %var% |findstr /b "str" >nul && (
  echo yes
  some more commands
) || (
  echo no
  some more commands
)

查找以 (/b) 开头的 str,(不要将其写入屏幕 >nul),如果找到了 (&&) 做某事,如果没有找到 (||) 做另一件事。

您还可以添加 /i 使其不区分大小写。


2

IF不支持模式匹配,但您可以从变量值中提取前三个字符并将其与str进行比较。

子字符串提取的语法如下:

%<i>variable</i>:~<i>offset</i>,<i>length</i>%

类似地,延迟扩展也是如此:

!<i>variable</i>:~<i>offset</i>,<i>length</i>!

因此,在您的情况下,应该是这样的:
IF "!_var:~0,3!" == "str" (
  ...
)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接