检测计算机名称

检测计算机名称

如何在批处理脚本中检测我是否在某台主机上?例如,如果我运行命令,hostname它会给我当前计算机的主机名。有没有办法可以将其保存到变量中或直接将其与其他内容进行比较?

设置 hostnameVar=hostname`
如果“%hostnameVar%”==“Molly-Laptop”(回显笔记本电脑)

或者

如果主机名 == “Molly-Potato”(Echo notlaptop)

这些都不起作用。

答案1

正如您所发现的,您可以使用%computername%。这是一个标准 Windows 环境变量明确说明您为何想要使用它。

此外,更直接地回答您的问题:

set hostnameVar=hostname不起作用,因为这是将程序本身的名称分配给变量——而不是其结果。

因此,在命令提示符中输入上述内容后,如果您随后输入,%hostnameVar%它就会像您输入/运行一样运行hostname(并给您一个结果)。

这也是为什么你的第二个if不起作用的原因——你本质上是在说If ("hostname") == ("this text string")。由于文本字符串与程序名称不匹配,因此它将失败。

说了这么多,你使用 FOR 循环批量将命令的输出重定向到变量:

@echo off
for /f "delims=" %%i in ('hostname') do set output=%%i
if "%output%" == "Molly-Laptop" (Echo laptop)

答案2

这似乎过于复杂,必须设置一个作为环境变量存在的变量。

请查看我建议的评论,因为我确信您已经解决了您的问题,对于任何着眼于未来的人来说,这只是一种更好的写作方式。

IF "%COMPUTERNAME%" EQU "MOLLY-LAPTOP" ECHO Laptop
IF "%COMPUTERNAME%" EQU "MOLLY-POTATO" ECHO Not Laptop

或者...

IF "%COMPUTERNAME%"=="MOLLY-LAPTOP" ECHO Laptop
IF "%COMPUTERNAME%"=="MOLLY-POTATO" ECHO Not Laptop

我不喜欢次要的陈述,所以我会遵循这个。

IF NOT "%COMPUTERNAME%" EQU "MOLLY-LAPTOP" ECHO Not Laptop

或者...

IF NOT "%COMPUTERNAME%"=="MOLLY-LAPTOP" ECHO Not Laptop

相关内容