【问题标题】:Cant get this IPCONFIG command to display between <p></p> HTML tags无法在 <p></p> HTML 标记之间显示此 IPCONFIG 命令
【发布时间】:2021-07-02 12:23:46
【问题描述】:

我无法让这个简单的代码在&lt;p&gt;/&lt;/p&gt; HTML 标记之间显示 IP 地址。

下面的代码可以运行,输出到文本文件就可以了。

if /i %opt%==1 ipconfig |findstr "IPv4">>"..\LOGS\%NAME%\%serial% %MAC%".txt

下面的代码是我想嵌入 CMD 代码的地方,但它只是忽略代码或以纯文本形式打印,具体取决于我如何修改它;它需要转义字符吗?

^<td width="38%%" class="table-border-left"^>^<p^>IP Address^</p^>^</td^>

并输出到 HTML 文件:

  >> "..\LOGS\NAME%\%serial% %MAC%".html

有什么建议吗?

【问题讨论】:

  • 不要使用Set /P 请求用户输入,使用choice.exe 命令实用程序,以便最终用户只能根据您的期望输入已知键。打开命令提示符窗口,键入choice /?,然后按[ENTER] 键,以阅读其语法和使用信息。如果您忽略该建议,这将是鲁莽的,您至少应该将if /i %opt%==1 更改为If "%opt:"=%" == "1",以便对潜在的输入字符串提供更多保护。

标签: html windows batch-file cmd ipconfig


【解决方案1】:

您的问题本质上是,'如何从 ipconfig.exe 获取 IPv4 地址并使用它'?

示例使用您的 命令,(结果返回为%%J

For /F "Delims=" %%G In ('%SystemRoot%\System32\ipconfig.exe
 ^| %SystemRoot%\System32\findstr.exe /R /C:"^[ ][ ]*IPv4[ ]"'
) Do For /F "Tokens=1,* Delims=:" %%H In ("%%G") Do For /F %%J In ("%%I"
) Do Echo ^<td width="38%%" class="table-border-left"^>^<p^>%%J^</p^>^</td^>

以上是一个单行命令,已拆分为无需修改即可工作,但仍然可读。如果你想将它作为单行运行,那么它看起来像这样:

For /F "Delims=" %%G In ('%SystemRoot%\System32\ipconfig.exe ^| %SystemRoot%\System32\findstr.exe /R /C:"^[ ][ ]*IPv4[ ]"') Do For /F "Tokens=1,* Delims=:" %%H In ("%%G") Do For /F %%J In ("%%I") Do Echo ^<td width="38%%" class="table-border-left"^>^<p^>%%J^</p^>^</td^>

请注意,可能有多个适配器绑定到 TCP/IP,因此您可能会看到返回多个结果

【讨论】:

  • 请注意,根据您的自我回答,它没有为您提出的问题提供任何解决方案,这表明您正在尝试返回多个命令的结果单一的 HTML 格式。因此,我强烈建议您不要尝试使用批处理语言来完成所有这些操作,而应使用 PowerShell,它可以以您需要的格式返回所有输出。
  • 因为它显然有效,另一个答案 (self) 没有为您提交的问题提供解决方案,并且由于您不是此站点@markus625 的新手,你应该已经阅读并理解了What should I do when someone answers my question?
  • 所以我注意到一个回复​​要求完整的 HTML 代码行,因为我只发布了一个 sn-p 关闭它,所以我回复了添加答案以添加代码,因为我认为你不能在 cmets 中添加代码。以后我将使用 cmets 框。
  • 对不起,我刚刚将您的答案标记为有效,自从加入以来我只发布了两个帖子,
【解决方案2】:

要创建有效的 HTML,我建议您使用像 这样的工具,而不是摆弄 Batch(以及大量转义字符)。

ipconfig | xidel -se "(<td width='38%' class='table-border-left'><p>{extract($raw,'IPv4.+: (.+)',1)}</p></td>)"

或者,您可以使用system() 从查询中调用ipconfig,而不是通过管道将ipconfig 传递给xidel。对于正确的缩进,您可以使用--output-node-indent

xidel -se "(<td width='38%' class='table-border-left'><p>{extract(system('ipconfig'),'IPv4.+: (.+)',1)}</p></td>)" --output-node-format=html --output-node-indent

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 2018-08-13
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2014-05-07
    相关资源
    最近更新 更多