iT邦幫忙

1

bat取得IP、MAC資訊並寫入文字檔相關問題

各位前輩好:

小弟寫了一個簡單的bat取得電腦的IP與MAC

=================
@echo off & setlocal enabledelayedexpansion

for /f "tokens=1 delims=[]" %%i in ('nbtstat -S^|find /n "乙太網路:"') do (
nbtstat -S | more +%%i >$
set /p Str=<$
del $
for /f "tokens=2 delims=[]" %%i in ('echo "!Str!"') do set LIP=%%i
)

for /f "tokens=16" %%i in ('ipconfig /all ^| find /i "IPv4 地址"') do set ip=%%i
echo 本機使用者名稱為: %COMPUTERNAME%

echo 本機有線IP為:%LIP%

for /f "tokens=1,3 delims=," %%i in ('getmac /v /nh /fo:csv ^| findstr
"..-..-..-..-..-.."') do (
echo %%i %%j
)

pause

執行結果:
https://ithelp.ithome.com.tw/upload/images/20200303/201227979f2YvyY9JK.png

不過有3個小問題

1.請問要如何將上述的資訊寫入TXT檔案,並將檔名命名為抓到的IP呢(隨著在不同電腦運作Bat會產生不同檔名)?
2.我只想抓到實體網路的MAC位址,但是都會抓到VM的,是否有辦法篩選?
3.這個匯出的檔案(TXT)會跟其他TXT做合併

以所有資料都放在C:\目錄下來說,下列指令能夠C:\下的所有.txt檔案合併

cd C:
copy *.txt conbine.txt

請問有辦法讓上述IPMAC的TXT檔案合併後,資訊能夠顯示在合併檔(conbine.txt)的最上層嗎

感謝各位大大解惑


關於第三個問題,我可能描述的不夠清楚

透過下列的bat檔案,能夠將windows的系統日誌(應用程式、安全性與系統)匯出成app.txt、sec.txt及sys.txt檔案,並且將三個檔案組合成一個檔案(winlog.txt)

=======================================================================
@echo off & setlocal enabledelayedexpansion

wevtutil qe security /f:text /rd:true /q:"Event[System[EventID=4624]]" > C:\sec.txt
wevtutil qe application /f:text /rd:true /q:"Event[System[(EventID=4625 or EventID=20001 or EventID=20003 or EventID=4672 or EventID=4624)]]" > C:\app.txt
wevtutil qe system /f:text /rd:true /q:"Event[System[(EventID=4625 or EventID=20001 or EventID=20003 or EventID=4672 or EventID=4624)]]" > C:\sys.txt
cd C:
copy *.txt winlog.txt
pause

========================================================================
而我的問題三就是希望將該台電腦的電腦名稱、IP及MAC插入到winlog.txt內容的最上層,並將檔名改成 "電腦IP".txt

希望各位大大能夠幫忙解惑,感恩

看更多先前的討論...收起先前的討論...
haoming iT邦好手 1 級 ‧ 2020-03-03 08:47:22 檢舉
請問 你說 實體網路 是甚麼意思呢? 指令應該只能 處理他看得到的內容。 如果 是 vm 內部的 應該只能看到 vm 能看到的 mac 位置而已
大大你好,我可能說得太複雜,上面的bat會抓到所有網路卡(包含硬體網卡與虛擬網卡)的資訊,我只需要硬體網卡的資訊
KYC World iT邦新手 5 級 ‧ 2020-03-03 13:01:33 檢舉
BATCH 檔產生出來後,不妨用EXCEL 後製去撈你要的資訊,會簡單點?
jerry:
能夠自動化做到嗎?

1 個回答

1
jeles51
iT邦研究生 4 級 ‧ 2020-03-03 16:03:52
最佳解答
  1. 先合併好 winlog.txt
  2. 執行下列指令
  3. 自動產出 IP.txt
@echo off & setlocal enabledelayedexpansion
REM 每次執行前,先刪除舊的檔案
del conbine.txt
for /f "tokens=1 delims=[]" %%i in ('nbtstat -S^|find /n "乙太網路:"') do (
nbtstat -S | more +%%i >$
set /p Str=<$
del $
for /f "tokens=2 delims=[]" %%i in ('echo "!Str!"') do set LIP=%%i
)

for /f "tokens=16" %%i in ('ipconfig /all ^| find /i "IPv4 地址"') do set ip=%%i
REM 開始寫入TXT檔
echo 本機使用者名稱為: %COMPUTERNAME%>conbine.txt
REM 附加到TXT檔
echo 本機有線IP為:%LIP%>>conbine.txt

for /f "tokens=1,3 delims=," %%i in ('getmac /v /nh /fo:csv ^| findstr
"..-..-..-..-..-.."') do (
REM 附加到TXT檔
echo %%i %%j>>conbine.txt
)
REM 去除含有VMware的列,再次寫入TXT檔
type conbine.txt | (findstr /v "VMware") >conbine.txt
REM 把conbine內容放到最上面,並取名為IP.txt
copy conbine.txt+winlog.txt %LIP%.txt
看更多先前的回應...收起先前的回應...

謝謝J大我實驗看看

J大我問題的定義可能不夠清楚,我有更新我的問題內容,再麻煩您幫我看看,謝謝

jeles51 iT邦研究生 4 級 ‧ 2020-03-04 09:02:05 檢舉

加了最後一行指令.

感謝J大解答,測試已成功,我在研究一下把兩個bat檔案組成一個

jeles51 iT邦研究生 4 級 ‧ 2020-03-04 10:32:33 檢舉

把組成 winlog.txt 那一大串,放在我貼的程式碼前面應該就行了吧~

搞定!!謝謝J大

我要發表回答

立即登入回答