批處理(Batch),也稱爲批處理腳本。顧名思義,批處理就是對某對象進行批量的處理,通常被認爲是一種簡化的腳本語言,它應用於DOS和Windows系統中。
批處理文件是將一系列命令按一定的順序集合爲一個可執行的文本文件,其擴展名爲BAT或者CMD。這些命令統稱批處理命令。
小知識:可以在鍵盤上按下Ctrl+C組合鍵來強行終止一個批處理的執行過程。
一般常規的批處理命令,按照自上而下的順序逐行執行,也就是說,只有第一行命令執行之後,纔可能執行第二行,第二行執行之後,纔可以執行到第三行.....如此依次執行。那麼,如果對於不同的情況,需要執行不同的既定操作,常規的執行規則顯然是無法完成任務的,這種應用場景下怎麼辦呢?我們就需要引入流程跳轉的概念,即就是動用流程跳轉語句goto了。流程跳轉的含義:改變默認的執行順序,強制跳轉到指定的位置執行特定的程序塊。
爲什麼要把goto和冒號這兩個命令聯合起來介紹?因爲它們是分不開的,無論少了哪個或多了哪個都會出錯。goto是個跳轉命令,緊跟其之後的是標籤名;冒號是一個標籤標誌,緊跟其之後的是標籤名,兩者合稱標籤。當程序運行到goto時,將自動跳轉到冒號定義的部分去執行(呵呵~試想一下,是不是分不開?)。goto語句與標籤一一呼應,在實現流程跳轉時相輔相成,缺一不可。
基礎知識介紹完畢,我們來看一個IP地址自動設置的批處理的實例代碼
@echo off MODE con: COLS=80 lines=30 color 0b title 自動IP By L echo ===================== echo 自動IP By L echo ===================== rem eth //eth 爲網卡名稱 echo 1.檢測活動網卡... rem 獲取網絡連接名稱 @(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)>"network.txt" set j=0 for /f "tokens=*" %%i in (network.txt) do ( set /a j+=1 set con!j!=%%i call set eth=%%con!j!%% ) echo 當前活動網卡名稱爲:%eth% set ipduan=149.32.49 rem gw //網關 set gw=%ipduan%.1 rem netmasks //子網掩碼 set netmasks=255.255.255.0 rem 最大和最小IP地址 set MAXID=205 set MINID=5 echo 2.檢查ID配置... set j=0 for /f "tokens=*" %%i in (nowid.txt) do ( set /a j+=1 set con!j!=%%i call set oldid=%%con!j!%% ) if %oldid% LSS %MINID% ( echo 檢查nowid.txt文件,ID:%oldid%不能小於%MINID% goto changeerror) echo 3.生成下一個ip地址... set j=0 for /f "tokens=*" %%i in (nowid.txt) do ( set /a j+=1 set con!j!=%%i call set id=%%con!j!%% ) echo -------- echo 上一個編號爲:%id% echo 上一個ip地址爲:%ipduan%.%id% echo -------- set /a newid=%id%+1 if %newid% GTR %MAXID% ( echo IP段分配已達上限:%ipduan%.%MAXID%!請重新修改nowid.txt文件或檢查IP地址 goto changeerror ) else ( echo %newid% > nowid.txt echo 下一個編號爲:%newid% ) rem ip //ip 爲你想更改的IP set ip=%ipduan%.%newid% echo 下一個ip地址:%ip% echo 下一個ip地址網關:%gw% echo 下一個ip地址掩碼:%netmasks% echo -------- echo 4.本機IP更改: %ip% rem netsh interface ipv4 set address %eth% static %ip% %netmasks% %gw% rem >nul echo. echo 5.驗證當前本機IP: ipconfig -all >ipconfig.txt type ipconfig.txt | find "%ip%" && goto success :changeerror echo 修改失敗,請手動分配IP地址! goto :end :success echo 修改成功 goto :end :end pause echo.