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.
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.
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.
J'utilise la variable d'environnement COMPUTERNAME
:
copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%
Pourquoi pas alors ?:
set Host=%COMPUTERNAME%
echo %Host%
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.
set Host=%COMPUTERNAME%
echo %Host%
Celui-ci suffit. pas besoin de boucles supplémentaires de gros codage.