55

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

host=`hostname`
echo ${host}

如何执行此操作以使其适用于任何 Windows Vista、Windows XP 和 Windows 2000 机器?

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

4

6 回答 6

65

嗯 - 像这样的东西?

set host=%COMPUTERNAME%
echo %host%

编辑:扩展 jitter 的答案,并在这个问题的答案中使用一种技术来设置环境变量,结果是运行命令行应用程序:

@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%

在任何一种情况下,“主机”都被创建为环境变量。

于 2009-06-15T21:07:26.683 回答
58

我通常使用命令将命令输出读入变量,FOR因为它省去了创建临时文件的麻烦。例如:

FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i

请注意,上述语句将在命令行上工作,但不能在批处理文件中工作。要在批处理文件中使用它,通过将它们放置两次来转义语句%中的语句:FOR

FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
ECHO %MYVAR%

您可以使用FOR. 有关更多详细信息,只需HELP FOR在命令提示符处键入。

于 2009-06-15T21:53:38.617 回答
12

我正在使用环境变量COMPUTERNAME

copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%
于 2010-09-20T18:33:48.707 回答
9

为什么不这样?:

set host=%COMPUTERNAME%
echo %host%
于 2010-02-17T11:44:36.270 回答
0

只需使用该行创建一个 .bat 文件

hostname

在里面。就是这样。Windows 还支持主机名命令。

于 2009-06-15T21:07:36.623 回答
-1
 set host=%COMPUTERNAME%
 echo %host%

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

于 2019-01-23T06:49:45.547 回答