RBa*_*ung 3 scripting windows logon-scripts command-line-interface environment-variables
作为我为客户处理的任务的一部分,我需要对企业登录脚本进行一些修改。Windows 命令行绝对不是我的专业领域,但我对大多数它都做得很好。但是,我有一个问题,我不知道该怎么做。
基本上,我需要将机器默认网关的 IP 地址获取到环境变量中(供以后在脚本中使用)。我知道它存在于ipconfig和 of的输出中tracert,并且我知道如何在他们的输出中找到我需要的确切行,但我不知道如何超越它。
例如,以下命令会产生如下输出:
>ipconfig|Find "Default Gateway"|Findstr/N "."|Findstr/B "1:"
1: Default Gateway . . . . . . . . . : 199.99.9.1
Run Code Online (Sandbox Code Playgroud)
但是现在我需要以某种方式仅从该文本行中提取 IP 地址,然后将其分配给环境变量。那么,如何从 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
Run Code Online (Sandbox Code Playgroud)
......可能会成功。
编辑:更改代码块以读取第三个值而不是第二个值,并且需要转义管道。
你也可以缩短为:
for /f "usebackq tokens=1,2,3 delims=:" %A in (`ipconfig ^| Find "Default Gateway" ^| Findstr/N "."`) do @if not defined MYVAR set MYVAR=%~C
Run Code Online (Sandbox Code Playgroud)
...因为,从技术上讲,第二个findstr(您限制为第一个结果)实际上是由if not defined