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