【问题标题】:String concatenation with "hostname" in batch script (how to put output of "hostname" into a variable)批处理脚本中与“主机名”的字符串连接(如何将“主机名”的输出放入变量中)
【发布时间】:2015-09-15 03:35:30
【问题描述】:

当我在 Windows 命令提示符中输入“主机名”时,我得到了系统的预期主机名,但我似乎无法将它包含在任何字符串输出中,要么分配给另一个变量,要么就像它本身一样。

下面的脚本输出“准备复制到服务器,这是正确的位置吗?”并且使用主机名的所有变体似乎都会产生相同的结果。

@echo off 
set hostnamevar=%hostname%
set "greeting1=Ready to copy to Server of "
set "greeting2=Is this the correct location?"
set "greeting=%greeting1%%hostnamevar%%greeting2%"
echo %greeting%
pause 

【问题讨论】:

  • 试试for /f %%A in ('hostname') do set hostname=%%Ahostname 程序不是环境变量。这是运行程序并将输出设置为变量的一种方法。每次我看到这样的代码时,都会提醒我为什么要使用 Bash,即使在 Windows 中也是如此。
  • 了解一下,这里的主机名是什么?命令?一个变量?主机名 /?即使使用 echo %hostname% 也可以给出未知命令,但是如果我在控制台上键入主机名,它会显示一个奇怪的输出。 Server : UnKnown Address: 2001:4860:4860::8888
  • 其实这个帖子非常类似于this one(第二个代码sn-p)...
  • 哦,等等,我的 cmd 卡在 nslookup 命令中,这就是 hostname 命令无法识别的原因,抱歉。 (我会在短时间内移除我所有的 cmets)

标签: windows batch-file cmd


【解决方案1】:

这里,主机名现在设置为环境变量。

@ECHO OFF
FOR /F %%H IN ('hostname') DO SET hostnamevar=%%H
SET Greeting=Ready to copy to Server of "%hostnamevar%" Is this the correct location?
ECHO %Greeting%
PAUSE

一点注意,在这部分,SET Greeting=Ready to copy to Server of "%hostnamevar%" Is this the correct location? 你不需要在%hostnamevar% 周围封装“”

【讨论】:

  • 不确定我是否关注您的评论。如果 %hostnamevar% 周围的封装引号不是必需的,那为什么还要它们呢?
  • 老实说,我就是我,如果那是我的代码,我希望我的眼睛被吸引到变量上,只是为了验证变量是否确实在变化。但是只要在需要的地方插入 %hostnamevar% ,代码就会正确执行,如果你愿意,可以将批处理窗口的标题设置为主机名。 TITLE %hostnamevar%
猜你喜欢
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 2012-06-21
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
相关资源
最近更新 更多