尝试在 IF 语句中使用通配符

尝试在 IF 语句中使用通配符

我正在尝试根据机器主机名执行一些命令,但无法正常工作。我希望只有当主机名以“Machine”开头时,命令才会运行。IF 语句是否支持通配符?

@echo off
setlocal enableDelayedExpansion
for /f "usebackq skip=1" %%i in (`wmic computersystem get name`) do (
  set name=%%i
  goto :done
  )
:done
if [%name%]==[MachineXXXX] start "" "%ProgramFiles%\Internet Explorer\iexplore.exe" "download url"
endlocal

答案1

您不能按照自己的意愿使用通配符,但可以使用变量子串

if [%name:0,7%]==[Machine] start ...

另一种方法是使用匹配函数findstr

echo %name% | findstr /b /c:"Machine" && start ...

这使用了一个外部程序,因此在这种情况下效率较低,但对于更复杂的匹配(例如使用findstr /r)它可能是一种有用的技术。

相关内容