web-dev-qa-db-fra.com

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

J'aimerais convertir cette syntaxe /bin/sh en un script batch Windows largement compatible:

Host=`hostname`
echo ${Host}

Comment faire pour que cela fonctionne sur n'importe quel ordinateur 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 plus général du programme n'est pas simplement de faire écho au nom d'hôte.

45
Edward Q. Bridges

En général, je lis le résultat de la commande dans les variables à l'aide de la commande FOR, car cela évite de créer des fichiers temporaires. Par exemple:

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

Notez que l'instruction ci-dessus fonctionnera sur la ligne de commande mais pas dans un fichier de commandes. Pour l'utiliser dans un fichier de commandes, écartez le % dans l'instruction FOR en les mettant deux fois:

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

Vous pouvez faire beaucoup plus avec FOR. Pour plus de détails, tapez simplement HELP FOR dans la commande Invite.

53
Dave Webb

hmm - quelque chose comme ça?

set Host=%COMPUTERNAME%
echo %Host%

EDIT: développe la réponse de la gigue et utilise une technique pour répondre à 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éé en tant que variable d'environnement.

54
sean e

J'utilise la variable d'environnement COMPUTERNAME:

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

Pourquoi pas alors ?:

set Host=%COMPUTERNAME%
echo %Host%
5
maniattico

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
jitter
 set Host=%COMPUTERNAME%
 echo %Host%

Celui-ci suffit. pas besoin de boucles supplémentaires de gros codage.

0
Ariful Huq