檔案下載,解壓密碼demo1234
修正理由:1.使用AngryIPScanner掃192.168.25.0/24 的網段,由於電腦名稱使用中文名稱,名稱會出現亂碼。為能正確顯示,電腦名稱改用英文名稱。
2.上一版利用C++程式產生的bat來一鍵設定行政人員電腦的電腦名稱與固定ip,
希望能保留中文檔案名稱。
3.Windows 10 、Windows8.1與Windows 7 的網路名稱不同。需要在 config.txt 增加位置,來因應不同版本 的Windows。
Windows 10的網路名稱為Ethernet0
Windows8.1的網路名稱為乙太網路
Windows 7 的網路名稱為區域網路
修正程式碼如下:
檔名:PcNameEng2FixedIP_Generator.cpp
內容:
#include <iostream>
#include <fstream>
#define MAX_FILENAME 100
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct PcName2Ip {
char PcName[MAX_FILENAME];
char EngPcName[MAX_FILENAME];
int IP;
};
main() {
/*讀取設定檔的變數*/
char NNmark[MAX_FILENAME];
char NN[MAX_FILENAME];
char SNMmark[MAX_FILENAME];
int SNM[4];
char GWmark[MAX_FILENAME];
int GW[4];
char DNS01mark[MAX_FILENAME];
int DNS01[4];
char DNS02mark[MAX_FILENAME];
int DNS02[4];
char UImark[MAX_FILENAME];
struct PcName2Ip UI[MAX_FILENAME];
int Total_Ip;
/*讀取設定檔config.txt,並將設定寫入變數*/
ifstream fin("config.txt");
if(!fin) {
cout << "無法讀入檔案\n";
return 1;
}
/*讀取後,將設定寫入變數並呈現在螢幕上以供檢查*/
fin >> NNmark;
fin >> NN;
fin >> SNMmark;
fin >> SNM[0] >> SNM[1] >> SNM[2] >> SNM[3];
fin >> GWmark;
fin >> GW[0] >> GW[1] >> GW[2]>> GW[3];
fin >> DNS01mark;
fin >> DNS01[0] >> DNS01[1] >> DNS01[2]>> DNS01[3];
fin >> DNS02mark;
fin >> DNS02[0] >> DNS02[1] >> DNS02[2] >> DNS02[3];
fin >> UImark;
Total_Ip = 1;
//讀取名稱與對應IP
while(!fin.eof()) {
fin >> UI[Total_Ip].PcName >> UI[Total_Ip].EngPcName >> UI[Total_Ip].IP;
Total_Ip++;
if (Total_Ip>=100) {
cout <<"\n警告!!讀取名稱與對應IP資料數超過100!!\n需修改原始碼MAX_FILENAME並重新編譯!!\n";
}
}
fin.close();
/*依名稱與對應IP範圍輸出檔名*/
char chFileName[MAX_FILENAME];
FILE * fp;
int ip[4];
ip[0]=GW[0];
ip[1]=GW[1];
ip[2]=GW[2];
for(ip[3]=1;ip[3]<=Total_Ip-1;ip[3]++) {
sprintf(chFileName, "%02d_%s_ip_%d_%d_%d_%d.bat",ip[3],UI[ip[3]].PcName,ip[0],ip[1],ip[2],UI[ip[3]].IP);
fp = fopen(chFileName, "w");
fprintf(fp, "@echo off\n");
fprintf(fp, "wmic.exe ComputerSystem Where Name=\"%%ComputerName%%\" call Rename Name=\"%s\" \n",UI[ip[3]].EngPcName);
fprintf(fp, "netsh interface ip set address \"%s\" static %d.%d.%d.%d %d.%d.%d.%d %d.%d.%d.%d\n",NN,ip[0],ip[1],ip[2],UI[ip[3]].IP,SNM[0],SNM[1],SNM[2],SNM[3],GW[0],GW[1],GW[2],GW[3]);
fprintf(fp, "netsh interface ip set dns \"%s\" static %d.%d.%d.%d\n",NN,DNS01[0],DNS01[1],DNS01[2],DNS01[3]);
fprintf(fp, "netsh interface ip add dns \"%s\" %d.%d.%d.%d\n",NN,DNS02[0],DNS02[1],DNS02[2],DNS02[3]);
fprintf(fp, "shutdown -r -t 0");
fclose(fp);
}
return 0;
}
檔案下載
最後執行結果ok,如下圖
資料來源:
1.利用C++程式產生的bat來一鍵設定行政人員電腦的電腦名稱與固定ip
沒有留言:
張貼留言