Wie würde ich den Namen des PCs finden, auf dem mein Batch-Programm ausgeführt wird?
Ich möchte den Namen eines PCs finden, auf dem mein Stapelverarbeitungsprogramm ausgeführt wird, und ihn als Variable speichern können. Irgendeine Hilfe?
Sie können den Hostnamen eines Systems über die Befehlszeile cmd oder Powershell mit abrufen hostname. Sie sollten es nicht als var speichern müssen, sondern es einfach inline aufrufen, wenn Sie es benötigen.
Frank Thomas
@FrankThomas - Warum geben Sie dies nicht stattdessen (vielleicht mit einem kurzen Beispiel) als Antwort an?
Nifle
2
hostnameist eine Exe, und während der Computername auf der Konsole ausgegeben wird, ist es nicht trivial, ihn in einer Batchdatei zu erfassen. Glücklicherweise ist bereits eine Umgebungsvariable festgelegt und verfügbar ( ComputerName), um sie auf einem typischen Windows-System zu verwenden.
Vikas Gupta
Antworten:
10
Wie Vikas Gupta geantwortet hat, können Sie die vordefinierte %COMPUTERNAME%Umgebungsvariable verwenden, die bereits den Computernamen enthält. Aus praktischer Sicht sollte dies alles sein, was Sie brauchen.
Es ist jedoch möglich, dass eine Batchdatei den Wert überschreibt, sodass nicht garantiert werden kann, dass der Wert korrekt ist.
Sie können WMIC verwenden, um den Computernamen direkt zu lesen.
for /f "skip=1 delims=" %%A in (
'wmic computersystem get name'
) do for /f "delims=" %%B in ("%%A") do set "compName=%%A"
Die zusätzliche FOR-Schleife eliminiert unerwünschte Wagenrücklaufzeichen, die ein Artefakt von FOR / F sind, das mit der Unicode-Ausgabe von WMIC interagiert. Bei nur einer Schleife befindet sich am Ende jeder Zeile ein Wagenrücklauf, der Probleme verursachen kann.
Gibt es einen Grund, wmic zu verwenden, anstatt nur anzurufen hostname?
uvb
Daran habe ich gedacht, nachdem ich die Antwort geschrieben hatte. Es wäre sicherlich einfacher. Ich bin kein Experte für diese Probleme, aber basierend auf serverfault.com/q/260563/201695 denke ich, dass Hostname und Computername nicht garantiert identisch sind. Aber ich denke, sie sollten unter normalen Umständen gleich sein.
Dbenham
26
Unter Windows ist normalerweise bereits eine Umgebungsvariable festgelegt, die Sie verwenden können.
hostname
. Sie sollten es nicht als var speichern müssen, sondern es einfach inline aufrufen, wenn Sie es benötigen.hostname
ist eine Exe, und während der Computername auf der Konsole ausgegeben wird, ist es nicht trivial, ihn in einer Batchdatei zu erfassen. Glücklicherweise ist bereits eine Umgebungsvariable festgelegt und verfügbar (ComputerName
), um sie auf einem typischen Windows-System zu verwenden.Antworten:
Wie Vikas Gupta geantwortet hat, können Sie die vordefinierte
%COMPUTERNAME%
Umgebungsvariable verwenden, die bereits den Computernamen enthält. Aus praktischer Sicht sollte dies alles sein, was Sie brauchen.Es ist jedoch möglich, dass eine Batchdatei den Wert überschreibt, sodass nicht garantiert werden kann, dass der Wert korrekt ist.
Sie können WMIC verwenden, um den Computernamen direkt zu lesen.
Die zusätzliche FOR-Schleife eliminiert unerwünschte Wagenrücklaufzeichen, die ein Artefakt von FOR / F sind, das mit der Unicode-Ausgabe von WMIC interagiert. Bei nur einer Schleife befindet sich am Ende jeder Zeile ein Wagenrücklauf, der Probleme verursachen kann.
quelle
hostname
?Unter Windows ist normalerweise bereits eine Umgebungsvariable festgelegt, die Sie verwenden können.
quelle
Get-Item Env:\ComputerName
$env:computername
(auch ohne Berücksichtigung der Groß- und Kleinschreibung).In PowerShell können Sie außerdem Folgendes verwenden:
Hier stammt der Wert von .Net, sodass das Problem der Verwendung vermieden wird
$Env:ComputerName
.quelle
$Env:ComputerName
?