作为我正在为客户完成的任务的一部分,我需要对企业登录脚本进行一些修改。Windows 命令行绝对不是我的专业领域,但我对它的大部分操作都还算熟练。但是,我有一个问题不知道该如何解决。
基本上,我需要将机器默认网关的 IP 地址放入环境变量中(供以后在脚本中使用)。我知道它存在于 和 的输出中ipconfig
,tracert
并且我知道如何在其输出中找到我需要的确切行,但我无法弄清楚如何超越这一点。
例如,以下命令产生如下输出:
>ipconfig|Find "Default Gateway"|Findstr/N "."|Findstr/B "1:"
1: Default Gateway . . . . . . . . . : 199.99.9.1
但现在我需要以某种方式从此文本行中提取 IP 地址,然后将其分配给环境变量。那么,我如何从 Windows 命令行执行此操作?(Windows XP 及更高版本)。
答案1
for /f
是你的朋友。
for /f "usebackq tokens=1,2,3 delims=:" %A in (`ipconfig ^| Find "Default Gateway" ^| Findstr/N "." ^| Findstr/B "1:"`) do @if not defined MYVAR set MYVAR=%~C
...可能会奏效。
编辑:更改代码块以读取第三值不是第二个,并且需要逃脱管道。
你可以也可以缩短为:
for /f "usebackq tokens=1,2,3 delims=:" %A in (`ipconfig ^| Find "Default Gateway" ^| Findstr/N "."`) do @if not defined MYVAR set MYVAR=%~C
...作为,技术上,第二个findstr
(限制为第一个结果)实际上是由if not defined