我想将这个 /bin/sh
语法转换为广泛兼容的Windows批处理脚本:
host=`hostname`
echo ${host}
如何使其在任何Windows Vista、Windows XP和Windows 2000机器上都能正常工作?
澄清一下:我希望在程序中继续使用存储在变量host
中的主机名。换句话说,该程序的更大目标不仅仅是回显主机名。
我想将这个 /bin/sh
语法转换为广泛兼容的Windows批处理脚本:
host=`hostname`
echo ${host}
如何使其在任何Windows Vista、Windows XP和Windows 2000机器上都能正常工作?
澄清一下:我希望在程序中继续使用存储在变量host
中的主机名。换句话说,该程序的更大目标不仅仅是回显主机名。
嗯 - 像这样的东西?
set host=%COMPUTERNAME%
echo %host%
编辑:在jitter的回答基础上进行扩展,并使用此问题的一个答案中的技术,设置一个环境变量以存储运行命令行应用程序的结果:
@echo off
hostname.exe > __t.tmp
set /p host=<__t.tmp
del __t.tmp
echo %host%
无论哪种情况,'host' 都被创建为环境变量。
我通常使用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
,即可了解更多详细信息。
echo %hostname% %hostname%
>echo %computername%
mycomputername
这些是Windows 7命令行示例(尝试从受限帐户和管理员帐户中执行)。正如您所观察到的,%computername%环境变量是唯一有效的,必须在使用之前定义%hostname%。在Windows中,命令行环境变量不区分大小写,因此您可以调整代码以适用于Linux。 - razvanone我正在使用环境变量 COMPUTERNAME
:
copy "C:\Program Files\Windows Resource Kits\Tools\" %SYSTEMROOT%\system32
srvcheck \\%COMPUTERNAME% > c:\shares.txt
echo %COMPUTERNAME%
set host=%COMPUTERNAME%
echo %host%
hostname
就是这样。Windows也支持hostname命令。
set host=%COMPUTERNAME%
echo %host%
这个就够了,不需要额外的循环或大量的编码。
%COMPUTERNAME%
即可。 - JGFMK