59 votes

Comment stocker le nom d'hôte dans une variable dans un fichier .bat ?

Je voudrais convertir cette /bin/sh dans un script batch Windows largement compatible :

host=`hostname`
echo ${host}

Comment faire pour qu'il fonctionne sur n'importe quelle machine Windows Vista, Windows XP et Windows 2000 ?

Pour clarifier : je voudrais ensuite continuer dans le programme et utiliser le nom d'hôte tel qu'il est stocké dans la variable host . En d'autres termes, l'objectif principal du programme n'est pas simplement de renvoyer le nom de l'hôte.

1 votes

Comme d'autres l'ont fait, utilisez simplement une variable d'environnement préexistante. %COMPUTERNAME% au lieu de

68voto

sean e Points 6857

Hmm - quelque chose comme ça ?

set host=%COMPUTERNAME%
echo %host%

EDIT : développer la réponse de Jitter et utiliser une technique dans une réponse à cette question pour définir une variable d'environnement avec le résultat de l'exécution d'une application en ligne de commande :

@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%

Dans les deux cas, "host" est créé comme une variable d'environnement.

58voto

Dave Webb Points 90034

J'ai l'habitude de lire la sortie de commande dans les variables en utilisant la fonction FOR car elle évite de devoir créer des fichiers temporaires. Par exemple :

FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i

Remarque : la déclaration ci-dessus fonctionnera sur la ligne de commande mais pas dans un fichier batch. Pour l'utiliser dans un fichier batch, échappez la commande % en el FOR en les mettant deux fois :

FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
ECHO %MYVAR%

Il y a beaucoup plus de choses que vous pouvez faire avec FOR . Pour plus de détails, il suffit de taper HELP FOR à l'invite de commande.

1 votes

Très bien, bien que la construction de la boucle for soit lourdement surchargée IMO. Je vais changer pour utiliser ceci. Merci !

1 votes

Vous avez raison - FOR est fondamentalement le couteau suisse des scripts en ce sens que vous finissez par l'utiliser pour résoudre la plupart des problèmes.

0 votes

Si vous voulez répéter l'affectation (dans cet exemple, cela n'a pas de sens, car vous ne demanderez le nom de l'hôte qu'une seule fois par exécution), n'oubliez pas d'utiliser SETLOCAL ENABLEDELAYEDEXPANSION (voir HELP SETLOCAL ) et utiliser !MYVAR! au lieu de %MYVAR%

12voto

brakertech Points 426

J'utilise la variable d'environnement COMPUTERNAME :

copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%

10voto

maniattico Points 21

Pourquoi pas? :

set host=%COMPUTERNAME%
echo %host%

0voto

jitter Points 35805

Il suffit de créer un fichier .bat avec la ligne

hostname

en elle. C'est tout. Windows prend également en charge la commande hostname.

1 votes

Désolé, j'aurais dû être plus clair. Je voulais utiliser la valeur telle qu'elle était stockée dans la variable, et non pas simplement la répercuter.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X