如何提取命令行输出到一个variables?

作为我为客户工作的任务的一部分,我需要对企业login脚本进行一些修改。 Windows的命令行绝对不是我的专业领域,但我对大部分的事情都行。 但是,我有一个问题,我不知道该怎么做。

基本上,我需要将机器的默认网关的IP地址变成一个环境variables(稍后在脚本中使用)。 我知道它存在于ipconfigtracert的输出中,我知道如何在他们的输出中find我需要的确切的一行,但是我不知道如何超越这个。

例如,下面的命令产生这样的输出:

 >ipconfig|Find "Default Gateway"|Findstr/N "."|Findstr/B "1:" 1: Default Gateway . . . . . . . . . : 199.99.9.1 

但是现在我需要以某种方式从这个文本行中只提取IP地址,然后将其分配给一个环境variables。 那么,我怎样才能从Windows命令行来做到这一点呢? (Windows XP和更高版本)。

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 

…可能会诀窍。

编辑:改变代码块读取第三个值不是第二个,并需要逃脱pipe道。

可以缩短到:

 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