Windows 如何将主机名存储在.bat文件的变量中?

Windows 如何将主机名存储在.bat文件的变量中?,windows,batch-file,scripting,hostname,Windows,Batch File,Scripting,Hostname,我想将此/bin/sh语法转换为广泛兼容的Windows批处理脚本: host=`hostname` echo ${host} 如何做到这一点,使它可以在任何WindowsVista、WindowsXP和Windows2000机器上工作 澄清一下:然后我想继续在程序中使用存储在变量host中的主机名。换句话说,程序的更大目标不是简单地回显主机名。hmm-类似这样的 set host=%COMPUTERNAME% echo %host% 编辑:扩展jitter的答案,并在答案中使用一种技术来设

我想将此
/bin/sh
语法转换为广泛兼容的Windows批处理脚本:

host=`hostname`
echo ${host}
如何做到这一点,使它可以在任何WindowsVista、WindowsXP和Windows2000机器上工作


澄清一下:然后我想继续在程序中使用存储在变量
host
中的主机名。换句话说,程序的更大目标不是简单地回显主机名。

hmm-类似这样的

set host=%COMPUTERNAME%
echo %host%
编辑:扩展jitter的答案,并在答案中使用一种技术来设置环境变量,从而获得运行命令行应用程序的结果:

@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%
@echo关闭
hostname.exe>\uu t.tmp

set/p host=只需创建一个带有以下行的.bat文件

hostname

在里面。就这样。Windows还支持hostname命令。

我通常使用
FOR
命令将命令输出读入变量,因为这样可以避免创建临时文件。例如:

FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i
注意,上述语句将在命令行上工作,但不会在批处理文件中工作。要在批处理文件中使用它,请将
%
语句中的
%
转义两次:

FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
ECHO %MYVAR%
对于
,您可以使用
做更多的事情。有关更多详细信息,请在命令提示下键入有关
的帮助。

为什么不这样做

set host=%COMPUTERNAME%
echo %host%

我正在使用环境变量
COMPUTERNAME

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

这个够了。不需要额外的大循环编码。

对不起,我应该说得更清楚。希望使用存储在变量中的值,而不是简单地回显它。非常好,尽管for循环构造重载。将切换到使用此。谢谢你说得对-FOR基本上是批处理脚本的瑞士军刀,因为你最终使用它来解决大多数问题。如果你想重复分配(在本例中,它没有意义,因为你只会在一次运行中查询一次主机名),那么别忘了使用
SETLOCAL ENABLEDELAYEDEXPANSION
(请参阅帮助设置本地)使用
!MYVAR!
而不是
%MYVAR%
“hostname”命令返回已存储在%COMPUTERNAME%环境变量中的相同内容。
%COMPUTERNAME%
的问题是它是大写的,
hostname
返回主机名的原始大小写。如果这很重要,则
需要主机名
方法。请您解释一下,与九年前和九年半前的相同答案相比,这是如何更好(或至少不同)的?抱歉。我没有检查很久以前的答案。只是回答了,以便未来用户可以通过确保获得一些价值。
 set host=%COMPUTERNAME%
 echo %host%