无法让此 IPCONFIG 命令显示在 <p></p> HTML 标记之间

Cant get this IPCONFIG command to display between <p></p> HTML tags

我无法让这个简单的代码显示 <p>/</p> 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

有什么建议吗?

你的问题本质上是,'How do I obtain just the IPv4 Address from ipconfig.exe, and use it'?

example using your 命令,(结果返回为%%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,我建议您使用像 这样的工具,而不是摆弄 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