批处理脚本 – “If语句”中的通配符

我正在写一个批处理脚本,其中我需要在if语句中使用通配符来匹配string的variables。 如果匹配,程序将进一步。

 if "!_var!"=="str*" ( -- SOME COMMANDS -- ) 

这是我用过的语法,但是我发现它根本没有工作。

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

寻找( /b =在开始处) str ,(不要写入屏幕>nul ),如果找到( && )做一些事情,如果找不到( || )做另一件事。

你也可以添加一个/i来使其不区分大小写。

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

子字符串提取的语法是这样的:

 % variable :~ offset , length % 

和延迟扩展类似:

 ! variable :~ offset , length ! 

所以,你的情况是这样的:

 IF "!_var:~0,3!" == "str" ( ... )