Как вы обнаружили, вы можете использовать %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)