iT邦幫忙

0

記錄所管理的電腦名稱及使用者

  • 分享至 

  • xImage
  •  

閒來無事設計了一個批次檔,這個批次檔的主要目地是修改電腦名稱並記錄到檔案中,
特點:
1.可以記錄電腦名稱,MAC及一個註記,可以用來註記使用者或部門
2.若重覆修改會提示是否使用舊的資料來修改,也可以重新修訂資料
3.重覆修改時超時未輸入自動填入舊資料,可指定超時秒數
4.預設電腦名稱採固定名稱加上三碼流水號也可自行指定名稱
用途:
1.整理所管理的電腦資料
2.懶得查舊資料

@Echo Off
Md "%windir%\MdTest" 2>nul&&Rd "%windir%\MdTest" >nul 2>nul||(Echo.&Echo.&Echo 動作完未成!&Echo 請用右鍵以系統管理員身分執行這個程式&Echo.&Echo.&Echo.&Echo.&Pause&Exit)
SetLocal ENABLEDELAYEDEXPANSION
Set "Line3=Echo.&Echo.&echo."
Set Sec=3
%Line3%
:Start
For /F "Skip=1" %%i In ('WMIC Nic  Where NetEnabled^=True Get MACAddress^|Findstr .') Do (
	Set Mac=%%i
	For /F "Delims=, Tokens=1-4" %%j In ('Findstr /E /C:"%%i" "%~F0"') Do (
		Set OldCustomers=%%l
		Set Old=%%j,%%k,%%l,%%m 
		Echo !此電腦資料已存在資料庫中!
		Echo 資料庫中的名稱:%%k
		Echo 資料庫中的 MAC:%%m
		Echo 如果你想使用舊有名稱請輸入 Y 手動輸入電腦名稱
		Echo 若 !Sec! 秒內未做出選擇將會自動套用舊有名稱
		Choice /T !Sec! /D N /C YN /M "請選擇:"
		If !ERRORLEVEL! EQU 1 Call :NewPC Replace
		IF Not Defined Replace (
			Set NewComputerName=%%k
			Set Customers=%%l
		) Else (
			Set NewComputerName=!Define!
			Set Customers=!Customers!
		)
		Echo ::Member,!NewComputerName!-,!Customers!,!Mac!>>"%~F0"
		Call :CreateComptuerName Replace
		Exit /b
	)
		Call :NewPC
		If Not Defined Counter Set Counter=1
		For /f %%i In ('Findstr /B /C:"::Member,!Define!-" "%~F0"') Do Set /A Counter+=1
		Set Counter=0000!Counter!&Set NewComputerName=!Define!-!Counter:~-4,4!
		Echo ::Member,!NewComputerName!,!Customers!,!Mac!>>"%~F0"
		Call :CreateComptuerName
		Exit /b
)
Echo 找不到MAC位置,請先安裝網路卡後再重新執行!
Pause
Exit /B 
:CreateComptuerName
Echo -------------------------------------
Echo 原電腦名稱:!ComputerName!
Echo 新電腦名稱:!NewComputerName!
Echo .....................................
Echo 原註記內容:!OldCustomers!
Echo 新註記內容:!Customers!
Echo -------------------------------------
WMIC ComputerSystem Where Name="%ComputerName%" Rename Name="!NewComputerName!"
If "%1" EQU "Replace" (
	%Line3%
	Echo.     !!!提示訊息!!!
	Echo 1.若曾更換網路卡時請會出現這個提示
	Echo 2.若你選擇變更舊的電腦名稱時會出現這個提示
	Echo 3.若直接套用舊資料時請刪除最後一行即可
	Echo.
	Echo 若與原有資料不相同時請手刪除重覆資料
	Echo 如未刪除可能發生跳號或重覆編號的現象
	Echo 底下指出要刪除的資料
	Echo.
	Echo !Old!
	Echo.
	Echo 請先將上列要刪除的資料 COPY 至剪貼簿
	Echo 將會開啟檔案供編修.
	Notepad "%~F0"
	Echo.
)

Echo 修改完成.	
Pause

Exit /B
:NewPC
Set Define=UserPC
Set Customers=資訊室
If "%1" EQU "Replace" Set Replace=Y
Cls
Echo 請輸入新的電腦名稱,或按 Enter 以預設電腦(%Define%+編號)名稱進行變更.
Set /P Define=電腦名稱:
Set "Msg1=Echo 發生命名原則錯誤:%Define%名稱無法使用!&Echo 僅能輸入0-9、a-Z及-符號,其它字元無法使用."
Set Define=!Define: =!
Echo !Define!|Findstr [^^a-Z0-9\-]>Nul&&(%Line3%&%Msg1%&Pause&Goto :NewPC)
%Line3%
Echo 請輸入註記,若無輸入將使用預設內容:!Customers!
Set /P Customers=註記:
Set "Customers=!Customers: =!"
%Line3%
If Not Defined Customers (%Line3%&Echo 未輸入註記內容!&Pause&Goto :NewPC)
Exit /b

說明:
這個批次檔會將電腦資料記錄在同一批次檔中,為了避免首次記錄錯誤需在最後一行多按一次Enter產生一行空白.
如要修改預設秒數在第5行:Set Sec=3
如要修改預設電腦名稱在第75行:Set Define=UserPC
如要修改註記在第76行:Set Customers=資訊室
使用環境:
windows 7 以上
Windows XP 需要另外下載 choice.exe 外部命令
XP 以下不適用


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
eigen
iT邦新手 1 級 ‧ 2016-12-11 15:33:54

有趣的 bat,建議加註一下,是在什麼環境下使用(ex: xp 2k win7 win10)

以前我寫這類的,有時上網找到的資料都一定能用作,因為 os 版本的問題

蟹老闆 iT邦大師 1 級 ‧ 2016-12-11 16:53:11 檢舉

感謝提醒,文未已補上說明,謝謝。

0
sanithome
iT邦新手 2 級 ‧ 2019-10-23 00:32:39

請教大師,若要把LAN或WLAN的MAC後四碼,當電腦名稱後四碼
要怎麼判斷會比較好呢,謝謝

我要留言

立即登入留言