¿Cómo encontrar el nombre de la PC en un script por lotes?


18

¿Cómo encontraría el nombre de la PC que ejecuta mi programa por lotes?

Me gustaría encontrar el nombre de una PC que ejecuta mi programa por lotes y poder almacenarlo como una variable. ¿Alguna ayuda?


44
puede recuperar el nombre de host de un sistema desde la línea de comando cmd o powershell con hostname. no debería necesitar almacenarlo como var, simplemente invocarlo en línea según lo necesite.
Frank Thomas

@FrankThomas: ¿por qué no proporciona esto como respuesta (quizás con un breve ejemplo)?
Nifle

2
hostnamees un exe, y aunque muestra el nombre de la máquina en la consola, no será trivial capturarlo en un archivo por lotes. Afortunadamente, ya existe un conjunto de variables de entorno y está disponible ( ComputerName) para usar en el sistema típico de Windows.
Vikas Gupta

Respuestas:


10

Como Vikas Gupta ha respondido, puede usar la %COMPUTERNAME%variable de entorno predefinida que ya contiene el nombre de la computadora. Desde un punto de vista práctico, esto debería ser todo lo que necesita.

Sin embargo, es posible que un archivo por lotes sobrescriba el valor, por lo que no se garantiza que el valor sea correcto.

Puede usar WMIC para leer directamente el nombre de la computadora.

for /f "skip=1 delims=" %%A in (
  'wmic computersystem get name'
) do for /f "delims=" %%B in ("%%A") do set "compName=%%A"

El bucle FOR adicional elimina los caracteres de retorno de carro no deseados que son un artefacto de FOR / F que interactúa con la salida Unicode de WMIC. Con solo un bucle, hay un retorno de carro al final de cada línea que puede causar problemas.


1
¿Hay alguna razón para usar wmic en lugar de solo llamar hostname?
Eis

Pensé en eso después de escribir la respuesta. Ciertamente sería más simple. No soy un experto en estos temas, pero según serverfault.com/q/260563/201695 , creo que no se garantiza que el nombre de host y el nombre de la computadora sean los mismos. Pero creo que se supone que son iguales en circunstancias normales.
dbenham

26

En Windows, normalmente una variable de entorno ya está configurada y disponible para su uso:

echo %ComputerName%

1
¿A qué versiones de Windows se aplica esto? (Trabajó para mí en Windows 7.)
David Richerby

1
Esta variable está presente al menos hasta Windows NT.
Digo reinstalar a Mónica el

Curiosamente, sin embargo, no funcionará en un PowerShell; solo en cmd.exe. extraño eso.
Frank Thomas

Powershell tiene su propia forma de representar cosas especiales como variables de entorno ... siguientes trabajos -Get-Item Env:\ComputerName
Vikas Gupta

1
@VikasGupta Podrías usar $env:computername(sin distinción entre mayúsculas y minúsculas).
Bob

0

En PowerShell también puedes usar:

[Environment]::MachineName

Aquí el valor proviene de .Net, por lo que evita el problema del uso $Env:ComputerName.


¿Cuál es el problema del uso $Env:ComputerName?
Sombra
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.