Windows
如何將命令行輸出提取到變數中?
作為我正在為客戶處理的任務的一部分,我需要對企業登錄腳本進行一些修改。Windows 命令行絕對不是我的專業領域,但我大部分都做得很好。但是,我有一個問題,我不知道該怎麼做。
基本上,我需要將機器預設網關的 IP 地址放入環境變數中(以便稍後在腳本中使用)。我知道它存在於 和 的輸出中
ipconfig
,tracert
並且我知道如何在它們的輸出中找到我需要的確切行,但我不知道如何超越。例如,以下命令產生如下輸出:
>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