Detectando o nome do computador

2

Como posso detectar se estou em um determinado computador host em um script em lote? Ex, se eu executar o comando hostname , ele me fornecerá o nome de host atual dos computadores. Existe uma maneira que eu possa salvar isso para uma variável ou compará-lo diretamente a outra coisa?

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

ou

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

Nenhum desses está funcionando.

    
por PsychoData 12.11.2013 / 19:58

2 respostas

2

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)
    
por 12.11.2013 / 20:46
1

Isso parece muito complexo para definir uma variável que existe como uma variável ambiental.

Por favor, veja meus comentários sugeridos, já que tenho certeza de que você resolveu seu problema. Esta é apenas a melhor maneira de escrevê-lo para qualquer pessoa que esteja olhando para o futuro.

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

Ou ...

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

Eu não gosto da instrução secundária, então eu seguiria isso.

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

Ou ...

IF NOT "%COMPUTERNAME%"=="MOLLY-LAPTOP" ECHO Not Laptop
    
por 04.12.2015 / 06:25