去年有發問過類似問題有得到以下解答
@echo off
for /f "tokens=1-7 delims=- " %%i in ('getmac ^| find "-"') do echo %%i:%%j:%%k:%%l:%%m:%%n
pause
但如果電腦有2組以上的時候,輸出就會變成有兩行。
上面的指令也無法使用類似指令輸出成txt"> C:\mac.txt" 他只會輸出最後一行
請問如果電腦存在2組以上的MAC,要如何才能夠擷取出其中一組?
假設,共有3組MAC,要取出第2組.
步驟1:取出全部mac到 d:\mac.txtfor /f "tokens=1-7 delims=- " %%i in ('getmac ^| find "-"') do echo %%i:%%j:%%k:%%l:%%m:%%n >>d:\mac.txt
步驟2:由mac.txt中,取出第2組mac到 d:\mac2.txtfor /f "tokens=1*delims=:" %%G in ('findstr /n "^" d:\mac.txt') do if %%G equ 2 echo %%H >d:\mac2.txt
上述 equ 2 的意思,是取出第2行.
補充:
2個步驟可濃縮成1行,結果會輸出到d:\mac.txtfor /f "tokens=1-7 delims=- " %%i in ('getmac ^| find "-"') do echo %%i:%%j:%%k:%%l:%%m:%%n >>d:\mac.txt && for /f "tokens=1*delims=:" %%G in ('findstr /n "^" d:\mac.txt') do if %%G equ 5 echo %%H >d:\mac.txt
謝謝J大及時解答
有幾個地方不太懂
補充說明我看到了 現在只剩不要":"的問題
我使用了以下方式實現 不過好冗長啊~~
:step3
for /f "tokens=1-7 delims=:" %%i in (d:\mac2.txt) do echo %%i%%j%%k%%l%%m%%n >>d:\mac3.txt
你找到答案了呀,
在步驟1,把:拿掉就好囉.
單行指令如下:
for /f "tokens=1-7 delims=- " %%i in ('getmac ^| find "-"') do echo %%i%%j%%k%%l%%m%%n >>d:\mac.txt && for /f "tokens=1*delims=:" %%G in ('findstr /n "^" d:\mac.txt') do if %%G equ 5 echo %%H >d:\mac.txt
非常感謝J大 哈哈
請問一下,如果要抓第一組MAC的後四碼當變數,可以一行打完,不要另存TXT檔嗎,謝謝
在下功力尚淺,只能在最後把 txt 刪除,
以下是一行指令,找出第一組後4碼
@echo off && (for /f "tokens=1-7 delims=- " %%i in ('getmac ^| find "-"') do echo %%m%%n >>d:\mac.txt ) && (for /f "tokens=1*delims=:" %%G in ('findstr /n "^" d:\mac.txt') do if %%G equ 1 echo %%H) && del d:\mac.txt