bat文件處理
bat文件處理實例
自動獲取本地連接及IPv4地址修改蚁鳖、雙IPv4地址添加
前言
對公司內(nèi)部網(wǎng)站或者固定IPv4地址的產(chǎn)品開發(fā)經(jīng)常遇到修改IP的問題,每次使用均通過手動方式非常麻煩糠雨,并且還得記住固定的IPv4地址才睹。對開發(fā)人員還好修改IP是常有的事,但一旦產(chǎn)品量產(chǎn)交于其它部門進行使用測試便會出現(xiàn)IPv4地址不對應(yīng)的問題甘邀,往往其它部門反饋的問題卻總是上位機或者下位機有問題琅攘,讓人頭禿。
本文可實現(xiàn)在windows下的bat文件對本地IP地址進行保存至當前bat文件中以及設(shè)置IP地址 自動獲取IP地址等功能松邪。
一坞琴、Windows命令行CMD基本語法
語法幫助
對于所有的CMD命令均可以同時使用 命令 /?
進行獲取幫助。也可以直接用 help 命令
.
首先進入Windows的命令行就要進行如下操作:
按住 win +r鍵 輸入 cmd 然后回車
[圖片上傳失敗...(image-e99b16-1655605490569)]
然后輸入 ping /? 進行查詢ping命令的使用幫助逗抑。
[圖片上傳失敗...(image-a5e7de-1655605490569)]
變量賦值
直接用set操作 無需定義變量類型
set j=0
標題循環(huán)剧辐、條件判斷
條件判斷的語句語法如下:
IF [判斷條件] (
[命令1]
) ELSE (
[命令2]
)
判斷條件可以為常規(guī)的變量 k==1
等,也可以為字符串 string1==string2
邮府。
比較條件也可以用下邊的語法進行表示
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
比較常用的還用來進行文件是否存在的一種判斷荧关,如下 如果文件1.txt存在就進行刪除
IF EXIST 1.txt del 1.txt
FOR循環(huán)語句常用來輪訓一個文件中的每一行,或者每一行字符串中以某些符號進行分割然后進行輪訓查找褂傀。
基本語法如下
輪訓輸出1.txt中的每一行字符串忍啤,tokens表示%%t變量賦值為通配符*所匹配到的值。
for /f "tokens=*" %%t in (1.txt) do (
echo %%t
)
變量的調(diào)用
賦值時可以直接將變量值j賦值給變量b仙辟,需要調(diào)用時需要添加%j%同波。
set j=0
set b=j
set con%j%=1
當添加變量延遲操作時需要使用鳄梅!j!進行變量調(diào)用
setlocal enabledelayedexpansion
set j=0
set b=j
set con!j!=1
其它的使用語法可參考別人的博客CMD基本語法
二未檩、bat文件處理代碼解讀
1.初始操作
代碼如下:
@set "interipp=192.168.31.142"
@set "intermaskk=255.255.255.0"
@set "intergatee=192.168.31.1"
@set "interdns11=192.168.31.1 "
@set "interdns22=172.16.3.200"
@echo off
@cls
剛開始這里保存的是我們用來記錄本機IP的地址戴尸,放在這里是為了不使用!以及轉(zhuǎn)義字符^冤狡,因為這里字符在生成bat文件時會被系統(tǒng)默認給轉(zhuǎn)義成變量值從而是的重新生成bat文件不能使用孙蒙。(這種調(diào)試了很久,網(wǎng)上沒有好的辦法去處理筒溃。)
2.獲取本地連接名稱
::------------------------------------先跳轉(zhuǎn)到這里---------------------------------------------------------------
::獲取網(wǎng)絡(luò)連接名稱
:GETNAME
@if exist 10.bat del 10.bat
@cls
@(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)>".\network.txt"
@set j=0
@echo 獲取到以下本地連接:
@for /f "tokens=*" %%i in (.\network.txt) do (
set /a j+=1
call set 網(wǎng)絡(luò)連接%%j%%=%%i
call set ethernetAdapter=%%i
call echo %%ethernetAdapter%%
)
@del /s /q /f .\network.txt
上邊的代碼實現(xiàn)對本地存在的網(wǎng)絡(luò)連接進行查詢马篮,并且保存在一個network.txt中方便進行輸出打印沾乘,輸出打印完畢刪除文件即可(最后一行)怜奖。
3.打印本地網(wǎng)絡(luò)連接
::選擇需要設(shè)置的本地連接
@cls
@echo ----------------------------------------------------------------
@echo ----------------------------------------------------------------
@echo 請選擇需要設(shè)置的網(wǎng)絡(luò)連接:
@for /l %%i in (1,1,!j!) do (
echo 請按 %%i設(shè)置 "!網(wǎng)絡(luò)連接%%i!"
)
echo.
3.選擇要操作的本地連接
::根據(jù)選擇賦值
set /p KEYSET= 已選擇:
@cls
@for /l %%i in (1,1,!j!) do (
if %KEYSET% == %%i set name=!網(wǎng)絡(luò)連接%%i!
if %KEYSET% == %%i echo 已選擇 "!網(wǎng)絡(luò)連接%%i!"
)
goto SET
添加這一部分是因為有電腦安裝虛擬機或者無線連接會產(chǎn)生多個本地連接,只有你選擇正確的本地連接才能設(shè)置正確的IP連接網(wǎng)絡(luò)翅阵。
4.IPv4修改類型設(shè)置
代碼如下(示例):
::配置選擇 常規(guī)用戶修改以下配置足夠
:SET
@echo ----------------------------------------------------------------
@echo ----------------------------------------------------------------
echo 設(shè)置[內(nèi)網(wǎng)IP]請按 1
echo 設(shè)置[自動IP]請按 2
echo 設(shè)置雙IP 本機+固定請按 3
echo.
set /p KEY= 已選擇:
if %KEY% == 1 goto ONE
if %KEY% == 2 goto TWO
if %KEY% == 3 goto THREE
5.設(shè)置局域網(wǎng)固定IPv4
:SET
@echo ----------------------------------------------------------------
@echo ----------------------------------------------------------------
echo 設(shè)置[局域網(wǎng)IP]請按 1
echo 設(shè)置[自動IP]請按 2
echo 設(shè)置[固定]請按 3
echo 設(shè)置雙IP 本機+[固定]請按 4
echo 記錄當前本機IP為[局域網(wǎng)IP]請按 d
echo.
@set /p KEY= 已選擇:
if %KEY% == 1 goto ONE
if %KEY% == 2 goto TWO
if %KEY% == 3 goto THREE
if %KEY% == 4 goto FOUR
if %KEY% == 5 goto FIVE
if %KEY% == d goto D
上邊是用來選擇跳轉(zhuǎn)用的歪玲,選擇d則會跳轉(zhuǎn)到保存當前IP的選項。
6.動態(tài)分配IPv4
代碼如下(示例):
:TWO
echo 正在進行動態(tài)IP設(shè)置掷匠,請稍等...
echo. IP 地址正在從DHCP自動獲取...
netsh interface ip set address "%name%" dhcp
echo. DNS地址正在從DHCP自動獲取...
netsh interface ip set dns "%name%" dhcp
echo ----
echo 全部設(shè)置完成!
pause
goto end
這部分很普通網(wǎng)上多的是不在介紹了
7.添加雙IPv4
代碼如下(示例):
:THREE
echo 設(shè)置7 正在自動添加 IP ......
netsh interface ip add address name="%name%" addr=172.29.4.100 mask=255.255.0.0
echo IP地址 /子網(wǎng)掩碼 /網(wǎng)關(guān)設(shè)置完成
pause
goto end
8.在當前bat文件中保存本地IPv4地址
這部分會先去獲取本地連接IP地址滥崩,然后跳轉(zhuǎn)
for /f "tokens=3* delims=: " %%a in ('netsh interface ip show config "%adapter%"^|find /i "IP 地址"') do (
set defaultip=%%a
goto NEXT1
)
:NEXT1
@for /f "tokens=4* delims=) " %%a in ('netsh interface ip show config "%adapter%"^|find /i "掩碼"') do (
set defaultmask=%%a
goto NEXT2
)
下邊這一部分會將當前bat文件進行讀取輸出,輸出同時進行匹配DNS2所在行的字符串讹语,如果存在則清空所有輸出钙皮,將IP字段進行單獨輸出(為了規(guī)避嘆號以及其它轉(zhuǎn)義字符在生成bat文件時被替換的問題,這也是為什么將本地IP地址放在bat文件的前幾行的原因)顽决,然后后邊的輸出與當前bat文件內(nèi)容一直短条。
@(for /f "tokens=* delims=" %%t in ('findstr .* %infile%') do (
@for /f "tokens=1,2* delims= " %%i in ("%%t") do (
@rem 匹配dns1
@if "%%~j"=="interdns22=%interdns22%" (
@if exist %outfile% del %outfile%
@echo @set "interipp=%defaultip%">>%outfile%
@echo @set "intermaskk=%defaultmask%">>%outfile%
@echo @set "intergatee=%defaultgate%">>%outfile%
@echo @set "interdns11=%defaultdns1%">>%outfile%
@set /a cnt=1
)
)
最后還要一個跳轉(zhuǎn),生成一個新的bat文件執(zhí)行刪除當前bat文件并將新生成的bat文件重命名為原bat文件名才菠。
echo 保存完成
goto JUMP
::生成一個新的bat文件進行舊文件的刪除以及新文件的命名
:JUMP
@echo. >10.bat
@echo if exist %infile% del %infile%>>10.bat
@echo ren 3.bat %infile%>>10.bat
@echo %infile%>>10.bat
@echo if exist 10.bat del 10.bat>>10.bat
@echo exit>>10.bat
10.bat
exit
源碼文件
新建一個.TXT的文檔茸时,將.TXT后綴修改為.bat,然后右鍵編輯或者用其它編輯器打開,將上述所有代碼復制進去赋访,最后運行的時候以管理員身份運行即可可都。
源碼文件已經(jīng)上傳,可下載設(shè)置蚓耽。
資源文件:IPv4自動修改及保存
總結(jié)
bat文件處理很方便渠牲,一些基本的添加刪除文件操作以及電腦的設(shè)置均可以通過此進行設(shè)置,比如自動關(guān)機步悠、添加定時任務(wù)等签杈。