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

1

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .