Вы можете получить имя хоста системы из командной строки cmd или powershell с помощью hostname. вам не нужно хранить его как переменную, просто вызывайте его по мере необходимости.
Фрэнк Томас
@FrankThomas - Почему бы вам не предоставить вместо этого ответ (возможно, с коротким примером)?
Nifle
2
hostnameэто исполняемый файл, и хотя он выводит имя машины на консоль, записать его в командный файл будет нетривиально. К счастью, переменная окружения уже установлена и доступна ( ComputerName) для использования в типичной системе Windows.
Викас Гупта
Ответы:
10
Как ответил Викас Гупта, вы можете использовать предопределенную %COMPUTERNAME%переменную среды, которая уже содержит имя компьютера. С практической точки зрения, это должно быть все, что вам нужно.
Однако для пакетного файла возможно перезаписать значение, поэтому не гарантируется, что значение будет правильным.
Вы можете использовать WMIC для непосредственного чтения имени компьютера.
for /f "skip=1 delims=" %%A in (
'wmic computersystem get name'
) do for /f "delims=" %%B in ("%%A") do set "compName=%%A"
Дополнительный цикл FOR устраняет нежелательные символы возврата каретки, которые являются артефактом FOR / F, взаимодействующим с выводом Unicode WMIC. Только в одной петле имеется возврат каретки в конце каждой строки, что может вызвать проблемы.
есть ли причина использовать wmic вместо просто вызова hostname?
эйс
Я подумал об этом после того, как написал ответ. Это конечно было бы проще. Я не эксперт по этим вопросам, но, основываясь на serverfault.com/q/260563/201695 , я думаю, что имя хоста и имя компьютера не обязательно совпадают. Но я думаю, что они должны быть одинаковыми при нормальных обстоятельствах.
Дбенхем
26
В Windows обычно переменная окружения уже установлена и доступна для использования -
hostname
. вам не нужно хранить его как переменную, просто вызывайте его по мере необходимости.hostname
это исполняемый файл, и хотя он выводит имя машины на консоль, записать его в командный файл будет нетривиально. К счастью, переменная окружения уже установлена и доступна (ComputerName
) для использования в типичной системе Windows.Ответы:
Как ответил Викас Гупта, вы можете использовать предопределенную
%COMPUTERNAME%
переменную среды, которая уже содержит имя компьютера. С практической точки зрения, это должно быть все, что вам нужно.Однако для пакетного файла возможно перезаписать значение, поэтому не гарантируется, что значение будет правильным.
Вы можете использовать WMIC для непосредственного чтения имени компьютера.
Дополнительный цикл FOR устраняет нежелательные символы возврата каретки, которые являются артефактом FOR / F, взаимодействующим с выводом Unicode WMIC. Только в одной петле имеется возврат каретки в конце каждой строки, что может вызвать проблемы.
источник
hostname
?В Windows обычно переменная окружения уже установлена и доступна для использования -
источник
Get-Item Env:\ComputerName
$env:computername
(без учета регистра).В PowerShell вы также можете использовать:
Здесь значение взято из .Net, поэтому он избегает проблемы использования
$Env:ComputerName
.источник
$Env:ComputerName
?