você pode recuperar o nome do host de um sistema a partir da linha de comando cmd ou powershell hostname. você não precisa armazená-lo como um var, basta invocá-lo em linha conforme necessário.
Frank Thomas
@FrankThomas - Por que você não fornece isso como resposta (talvez com um pequeno exemplo)?
NDec
2
hostnameé um exe e, embora exiba o nome da máquina no console, não será trivial capturá-lo em um arquivo em lotes. Felizmente, já existe um conjunto de variáveis de ambiente e disponível ( ComputerName) para uso no sistema Windows típico.
Vikas Gupta
Respostas:
10
Como Vikas Gupta respondeu, você pode usar a %COMPUTERNAME%variável de ambiente predefinida que já contém o nome do computador. Do ponto de vista prático, isso deve ser tudo o que você precisa.
No entanto, é possível que um arquivo em lote substitua o valor, portanto, não é garantido que o valor esteja correto.
Você pode usar o WMIC para ler diretamente o nome do computador.
for /f "skip=1 delims=" %%A in (
'wmic computersystem get name'
) do for /f "delims=" %%B in ("%%A") do set "compName=%%A"
O loop FOR extra elimina caracteres de retorno de carro indesejados que são um artefato do FOR / F interagindo com a saída Unicode do WMIC. Com apenas um loop, há um retorno de carro no final de cada linha que pode causar problemas.
existe uma razão para usar wmic em vez de apenas chamar hostname?
eis
Pensei nisso depois que escrevi a resposta. Certamente seria mais simples. Não sou especialista nessas questões, mas com base em serverfault.com/q/260563/201695 , acho que o nome do host e o nome do computador não têm a mesma garantia. Mas acho que eles devem ser os mesmos em circunstâncias normais.
dbenham
26
No Windows, normalmente uma variável de ambiente já está definida e disponível para você usar -
hostname
. você não precisa armazená-lo como um var, basta invocá-lo em linha conforme necessário.hostname
é um exe e, embora exiba o nome da máquina no console, não será trivial capturá-lo em um arquivo em lotes. Felizmente, já existe um conjunto de variáveis de ambiente e disponível (ComputerName
) para uso no sistema Windows típico.Respostas:
Como Vikas Gupta respondeu, você pode usar a
%COMPUTERNAME%
variável de ambiente predefinida que já contém o nome do computador. Do ponto de vista prático, isso deve ser tudo o que você precisa.No entanto, é possível que um arquivo em lote substitua o valor, portanto, não é garantido que o valor esteja correto.
Você pode usar o WMIC para ler diretamente o nome do computador.
O loop FOR extra elimina caracteres de retorno de carro indesejados que são um artefato do FOR / F interagindo com a saída Unicode do WMIC. Com apenas um loop, há um retorno de carro no final de cada linha que pode causar problemas.
fonte
hostname
?No Windows, normalmente uma variável de ambiente já está definida e disponível para você usar -
fonte
Get-Item Env:\ComputerName
$env:computername
(sem distinção entre maiúsculas e minúsculas).No PowerShell, você também pode usar:
Aqui o valor vem do .Net, portanto, evita a questão do uso
$Env:ComputerName
.fonte
$Env:ComputerName
?