使用方法:
1.檔案下載
2.下載後解壓縮,解壓密碼demo1234
3.變更資料夾內的config.txt
5.產生 (固定IP起始到固定IP結束的範圍)數目的BAT
6.將BAT檔放置在電腦(要設定固定IP的)
7.對BAT點兩下(注意:要以系統管理員身分執行),即完成設定
以下是程式說明:
固定IP語法:
netsh interface ip set address "區域連線" static 固定IP 子網路遮罩 閘道
設定兩個DNS的IP
netsh interface ip set dns "區域連線" static 第一個DNS的IP
netsh interface ip add dns "區域連線" 第二個DNS的IP
例子:
固定IP:192.168.25.200
子網路遮罩:255.255.255.0
閘道IP:192.168.25.2
第一個DNS的IP:8.8.8.8
第二個DNS的IP:168.95.1.1
檔名:StaticIP.bat
內容:
netsh interface ip set address "區域連線" static 192.168.25.200 255.255.255.0 192.168.25.2
netsh interface ip set dns "區域連線" static 8.8.8.8
netsh interface ip add dns "區域連線" 168.95.1.1
設定自動取得IP(即DHCP)
netsh interface ip set address "區域連線" dhcp
設定自動取得DNS的IP(即DHCP)
netsh interface ip set dns "區域連線" dhcp
檔名:DhcpIP.bat
內容:
netsh interface ip set address "區域連線" dhcp
netsh interface ip set dns "區域連線" dhcp
接下來,我們要利用上述BAT的內容,寫入C++程式,由程式去讀取config.txt,然後產生我們要的BAT檔案。
檔名:Fixed_IP_Generator.cpp
內容:
#include <iostream>
#include <fstream>
#define MAX_FILENAME 100
#include <stdio.h>
#include <stdlib.h>
using namespace std;
main() {
/*讀取設定檔的變數*/
char SNMmark[MAX_FILENAME];
int SNM[4];
char GWmark[MAX_FILENAME];
int GW[4];
char DR01mark[MAX_FILENAME];
int DR01[4];
char DR02mark[MAX_FILENAME];
int DR02[4];
char DNS01mark[MAX_FILENAME];
int DNS01[4];
char DNS02mark[MAX_FILENAME];
int DNS02[4];
/*讀取設定檔config.txt,並將設定寫入變數*/
ifstream fin("config.txt");
if(!fin) {
cout << "無法讀入檔案\n";
return 1;
}
/*讀取後,將設定寫入變數並呈現在螢幕上以供檢查*/
while(!fin.eof()) {
fin >> SNMmark;
fin >> SNM[0] >> SNM[1] >> SNM[2] >> SNM[3];
fin >> GWmark;
fin >> GW[0] >> GW[1] >> GW[2]>> GW[3];
fin >> DR01mark;
fin >> DR01[0] >> DR01[1] >> DR01[2]>> DR01[3];
fin >> DR02mark;
fin >> DR02[0] >> DR02[1] >> DR02[2] >> DR02[3];
fin >> DNS01mark;
fin >> DNS01[0] >> DNS01[1] >> DNS01[2]>> DNS01[3];
fin >> DNS02mark;
fin >> DNS02[0] >> DNS02[1] >> DNS02[2] >> DNS02[3];
}
fin.close();
/*依設定檔固定IP範圍輸出檔名*/
char chFileName[MAX_FILENAME];
FILE * fp;
char ipmark[MAX_FILENAME];
int ip[4];
ip[0]=DR01[0];
ip[1]=DR01[1];
ip[2]=DR01[2];
for ( ip[3]=DR01[3] ; ip[3]<=DR02[3] ; ip[3]++) {
sprintf(chFileName, "ip_%d_%d_%d_%d.bat",ip[0],ip[1],ip[2],ip[3]);
fp = fopen(chFileName, "w");
fprintf(fp, "netsh interface ip set address \"區域連線\" static %d.%d.%d.%d %d.%d.%d.%d %d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3],SNM[0],SNM[1],SNM[2],SNM[3],GW[0],GW[1],GW[2],GW[3]);
fprintf(fp, "netsh interface ip set dns \"區域連線\" static %d.%d.%d.%d\n",DNS01[0],DNS01[1],DNS01[2],DNS01[3]);
fprintf(fp, "netsh interface ip add dns \"區域連線\" %d.%d.%d.%d\n",DNS02[0],DNS02[1],DNS02[2],DNS02[3]);
fclose(fp);
}
return 0;
}
資料來源:
1.使用批次檔快速設定網路介面卡 IP
2.格式化檔案 I/O
3.怎樣指定開檔的檔案名稱
4.sprintf() - C語言庫函數
沒有留言:
張貼留言