Como encontrar o nome do PC em um script em lote?


18

Como eu encontraria o nome do PC executando meu programa em lote?

Gostaria de encontrar o nome de um PC que esteja executando meu programa em lote e poder armazená-lo como uma variável. Qualquer ajuda?


4
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.


1
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 -

echo %ComputerName%

1
A quais versões do Windows isso se aplica? (Trabalhou para mim no Windows 7.)
David Richerby

1
Essa variável está presente pelo menos todo o caminho de volta ao Windows NT.
Eu digo Restabelecer Monica

Curiosamente, porém, não funcionará em um PowerShell; somente no cmd.exe. estranho isso.
31814 Frank Frank Thomas

Powershell tem sua própria maneira de representar as coisas especiais, como variáveis de ambiente ... seguintes obras -Get-Item Env:\ComputerName
Vikas Gupta

1
@VikasGupta Você também pode usar $env:computername(sem distinção entre maiúsculas e minúsculas).
22414 Bob

0

No PowerShell, você também pode usar:

[Environment]::MachineName

Aqui o valor vem do .Net, portanto, evita a questão do uso $Env:ComputerName.


Qual é o problema do uso $Env:ComputerName?
Shadow
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.