Comment trouver le nom du PC dans un script batch?


18

Comment puis-je trouver le nom du PC exécutant mon programme de commandes dessus?

Je voudrais trouver le nom d'un PC qui exécute mon programme batch et pouvoir le stocker en tant que variable. De l'aide?


4
vous pouvez récupérer le nom d'hôte d'un système à partir de la ligne de commande cmd ou powershell avec hostname. vous ne devriez pas avoir besoin de le stocker en tant que var, il suffit de l'invoquer en ligne comme vous en avez besoin.
Frank Thomas

@FrankThomas - Pourquoi ne fournissez-vous pas cette réponse (peut-être avec un court exemple) à la place?
Nifle

2
hostnameest un exe, et bien qu'il affiche le nom de la machine sur la console, il ne sera pas trivial de le capturer dans un fichier batch. Heureusement, il existe déjà un ensemble de variables d'environnement et disponible ( ComputerName) à utiliser sur un système Windows classique.
Vikas Gupta

Réponses:


10

Comme Vikas Gupta a répondu, vous pouvez utiliser la %COMPUTERNAME%variable d'environnement prédéfinie qui contient déjà le nom de l'ordinateur. D'un point de vue pratique, cela devrait être tout ce dont vous avez besoin.

Cependant, il est possible qu'un fichier de commandes écrase la valeur, il n'est donc pas garanti que la valeur soit correcte.

Vous pouvez utiliser WMIC pour lire directement le nom de l'ordinateur.

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

La boucle FOR supplémentaire élimine les caractères de retour chariot indésirables qui sont un artefact d'interaction FOR / F avec la sortie Unicode de WMIC. Avec une seule boucle, il y a un retour chariot à la fin de chaque ligne qui peut causer des problèmes.


1
y a-t-il une raison d'utiliser wmic au lieu d'appeler simplement hostname?
eis

J'y ai pensé après avoir écrit la réponse. Ce serait certainement plus simple. Je ne suis pas un expert sur ces questions, mais sur la base de serverfault.com/q/260563/201695 , je pense que le nom d'hôte et le nom de l'ordinateur ne sont pas garantis d'être identiques. Mais je pense qu'ils sont censés être les mêmes dans des circonstances normales.
dbenham

26

Sous Windows, généralement une variable d'environnement est déjà définie et disponible pour que vous puissiez l'utiliser -

echo %ComputerName%

1
À quelles versions de Windows cela s'applique-t-il? (A travaillé pour moi dans Windows 7.)
David Richerby

1
Cette variable est présente au moins tout le chemin du retour à Windows NT.
Je dis Réintégrer Monica

assez intéressant cependant, cela ne fonctionnera pas dans un PowerShell; uniquement dans cmd.exe. bizarre.
Frank Thomas

Powershell a sa propre façon de représenter des choses spéciales comme les variables d'environnement ... à la suite des travaux -Get-Item Env:\ComputerName
Vikas Gupta

1
@VikasGupta Vous pouvez simplement utiliser $env:computername(insensible à la casse aussi).
Bob

0

Dans PowerShell, vous pouvez également utiliser:

[Environment]::MachineName

Ici, la valeur provient de .Net, ce qui évite le problème d'utilisation $Env:ComputerName.


Quel est le problème d'utilisation $Env:ComputerName?
Shadow
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.