2

Как я могу определить, нахожусь ли я на определенном хост-компьютере в пакетном скрипте? Например, если я запускаю команду hostname она выдает текущее имя компьютера. Есть ли способ, которым я могу сохранить это в переменной или напрямую сравнить его с чем-то другим?

set hostnameVar=hostname`
if "%hostnameVar%" == "Molly-Laptop" (Echo laptop)

или же

if hostname == "Molly-Potato" (Echo notlaptop)

Ни один из них не работает.

2 ответа2

2

Как вы обнаружили, вы можете использовать %computername% . Это стандартная переменная среды Windows, предназначенная именно для того, почему вы хотите ее использовать.

Дополнительно и чтобы более прямо ответить на ваш вопрос:

set hostnameVar=hostname не работает, потому что это присваивает имя самой программы переменной, а не ее результат.

Таким образом, после того, как вы ввели выше в командной строке, если вы затем набрали %hostnameVar% он будет действовать так же, как вы набрали / запустили hostname (и даст вам результат).

Вот почему ваш второй if не работает - вы, по сути, говорите If ("hostname") == ("this text string") . Поскольку текстовая строка не соответствует названию программы, произойдет сбой.

Сказав все это, вы можете перенаправить вывод команды в переменную в пакете, используя цикл FOR:

@echo off
for /f "delims=" %%i in ('hostname') do set output=%%i
if "%output%" == "Molly-Laptop" (Echo laptop)
1

Это кажется слишком сложным, чтобы установить переменную, которая существует в качестве переменной среды.

Пожалуйста, смотрите мои предложенные комментарии, так как я уверен, что вы решили свою проблему, это просто лучший способ написать это для тех, кто смотрит в будущее.

IF "%COMPUTERNAME%" EQU "MOLLY-LAPTOP" ECHO Laptop
IF "%COMPUTERNAME%" EQU "MOLLY-POTATO" ECHO Not Laptop

Или же...

IF "%COMPUTERNAME%"=="MOLLY-LAPTOP" ECHO Laptop
IF "%COMPUTERNAME%"=="MOLLY-POTATO" ECHO Not Laptop

Мне не нравится вторичное утверждение, поэтому я бы следовал этому.

IF NOT "%COMPUTERNAME%" EQU "MOLLY-LAPTOP" ECHO Not Laptop

Или же...

IF NOT "%COMPUTERNAME%"=="MOLLY-LAPTOP" ECHO Not Laptop

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