Como você descobriu, você pode usar %computername%
. Esta é uma variável de ambiente padrão do Windows fornecida exatamente por que você deseja usá-la.
Além disso, e para responder mais diretamente à sua pergunta:
set hostnameVar=hostname
não funciona porque está atribuindo o nome do próprio programa à variável - não ao resultado.
Então, depois que você digitou o acima em um prompt de comando, se você digitou %hostnameVar%
, ele agiria exatamente como você digitou / correu hostname
(e deu um resultado).
É também por isso que o seu segundo if
não funciona - você está basicamente dizendo If ("hostname") == ("this text string")
. Como a string de texto não corresponde ao nome do programa, ela falhará.
Tendo dito tudo isso, você pode redirecionar a saída de um comando para uma variável em lote usando um loop FOR:
@echo off
for /f "delims=" %%i in ('hostname') do set output=%%i
if "%output%" == "Molly-Laptop" (Echo laptop)