Windows

如何將命令行輸出提取到變數中?

  • November 21, 2017

作為我正在為客戶處理的任務的一部分,我需要對企業登錄腳本進行一些修改。Windows 命令行絕對不是我的專業領域,但我大部分都做得很好。但是,我有一個問題,我不知道該怎麼做。

基本上,我需要將機器預設網關的 IP 地址放入環境變數中(以便稍後在腳本中使用)。我知道它存在於 和 的輸出中ipconfigtracert並且我知道如何在它們的輸出中找到我需要的確切行,但我不知道如何超越。

例如,以下命令產生如下輸出:

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

1:   Default Gateway . . . . . . . . . : 199.99.9.1

但現在我需要以某種方式僅從該文本行中提取 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

…可能會成功。

**編輯:**更改程式碼塊以讀取第三個值而不是第二個值,並且需要轉義管道。

您還可以縮短為:

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

引用自:https://serverfault.com/questions/469053