Попытка использовать подстановочный знак в выражении IF

430
grahamriley

Я пытаюсь выполнить некоторые команды в зависимости от имени хоста компьютера, но у меня возникают проблемы с его работой. Я хочу, чтобы команда выполнялась только в том случае, если имя хоста начинается с «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 
0

1 ответ на вопрос

1
AFH

Вы не можете использовать подстановочные знаки в нужном вам смысле, но вы можете достичь требуемого результата с помощью переменной подстроки :

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

Альтернативный подход заключается в использовании соответствующих функций в findstr:

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

При этом используется внешняя программа, поэтому она менее эффективна в этом случае, но может оказаться полезной техникой для более сложных сопоставлений (например, использования findstr /r).