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

Edw*_*ges 49 windows scripting batch-file

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

host=`hostname`
echo ${host}
Run Code Online (Sandbox Code Playgroud)

如何做到这一点,以便它可以在任何Windows Vista,Windows XP和Windows 2000机器上运行?

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

sea*_*n e 55

嗯 - 像这样的?

set host=%COMPUTERNAME%
echo %host%
Run Code Online (Sandbox Code Playgroud)

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

@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%
Run Code Online (Sandbox Code Playgroud)

在任何一种情况下,'host'都是作为环境变量创建的.


Dav*_*ebb 55

我通常使用FOR命令将命令输出读入变量,因为它节省了必须创建临时文件.例如:

FOR /F "usebackq" %i IN (`hostname`) DO SET MYVAR=%i
Run Code Online (Sandbox Code Playgroud)

注意,上面的语句将在命令行上运行,但不在批处理文件中.要在批处理文件中使用它,%请将FOR它们放入语句中两次:

FOR /F "usebackq" %%i IN (`hostname`) DO SET MYVAR=%%i
ECHO %MYVAR%
Run Code Online (Sandbox Code Playgroud)

你可以做更多的事情FOR.有关更多详细信息,请HELP FOR在命令提示符下键

  • 'hostname'命令返回已存储在%COMPUTERNAME%环境变量中的相同内容. (10认同)
  • `%COMPUTERNAME%`的问题在于它是大写的,`hostname`返回主机名的原始大小写.如果这很重要,那么需要`hostname`方法. (4认同)

bra*_*ech 12

我正在使用环境变量COMPUTERNAME:

copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%
Run Code Online (Sandbox Code Playgroud)


小智 6

为什么不呢?:

set host=%COMPUTERNAME%
echo %host%
Run Code Online (Sandbox Code Playgroud)