如何将命令行输出提取到变量中?

如何将命令行输出提取到变量中?

作为我正在为客户完成的任务的一部分,我需要对企业登录脚本进行一些修改。Windows 命令行绝对不是我的专业领域,但我对它的大部分操作都还算熟练。但是,我有一个问题不知道该如何解决。

基本上,我需要将机器默认网关的 IP 地址放入环境变量中(供以后在脚本中使用)。我知道它存在于 和 的输出中ipconfigtracert并且我知道如何在其输出中找到我需要的确切行,但我无法弄清楚如何超越这一点。

例如,以下命令产生如下输出:

>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

相关内容