Ich möchte diese /bin/sh
-Syntax in ein weitgehend kompatibles Windows-Batch-Skript konvertieren:
Host=`hostname`
echo ${Host}
Wie können Sie dies tun, damit es auf jedem Windows Vista-, Windows XP- und Windows 2000-Computer funktioniert?
Zur Klarstellung: Ich möchte dann im Programm weitergehen und den Hostnamen verwenden, wie er in der Variablen Host
gespeichert ist. Mit anderen Worten, das größere Ziel des Programms besteht nicht darin, den Hostnamen einfach zu wiederholen.
Normalerweise lese ich die Befehlsausgabe mit Hilfe des FOR
-Befehls in Variablen, da dies das Erstellen temporärer Dateien erspart. Zum Beispiel:
FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i
Beachten Sie, dass die obige Anweisung in der Befehlszeile, aber nicht in einer Batchdatei funktioniert. Um es in einer Batchdatei zu verwenden, entgehen Sie dem %
in der FOR
-Anweisung, indem Sie sie zweimal eingeben:
FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
ECHO %MYVAR%
Mit FOR
können Sie noch viel mehr tun. Für weitere Informationen geben Sie einfach HELP FOR
an der Eingabeaufforderung ein.
hmm - sowas?
set Host=%COMPUTERNAME%
echo %Host%
EDIT: Erweiterung der Antwort von Jitter und Verwendung einer Technik in einer Antwort auf diese Frage , um eine Umgebungsvariable mit dem Ergebnis der Ausführung einer Befehlszeilen-App festzulegen:
@echo off
hostname.exe > __t.tmp
set /p Host=<__t.tmp
del __t.tmp
echo %Host%
In beiden Fällen wird 'Host' als Umgebungsvariable erstellt.
Ich verwende die Umgebungsvariable COMPUTERNAME
:
copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%
Warum nicht so ?:
set Host=%COMPUTERNAME%
echo %Host%
Erstellen Sie einfach eine .bat-Datei mit der Zeile
hostname
drin. Das ist es. Windows unterstützt auch den Befehl Hostname.
set Host=%COMPUTERNAME%
echo %Host%
Das reicht. keine extra Loops großer Codierung nötig.