這兩天用虛擬機安裝系統,準備用虛擬機把開發環境和數據庫分離,想法如下:
1.開發環境為Host
2.Guest 為數據庫服務器,每一個服務器都是一個獨立的虛擬機
數據庫包括,Oracle 9i、SQL Server 2005、MySQL
但是裝系統,還要設置環境變量,以減少系統盤的占用和增加性能,這就需要遷移系統盤的一些目錄了,比如IE臨時目錄,臨時文件夾,Applocation Data;此外,我們還需要把重要的文件夾移動到其他分區,以避免在系統盤發生事故或者想要恢復的時候,重要數據(MyDocument,收藏夾,程序配置等)不受影響。
手動修改環境變量和注冊表值太麻煩了,因為我每次裝系統都要修改那么一次,這次實在受夠了,心里一發狠。好,我寫個腳本把你搞定!
BAT是不能設置系統環境變量的,此外可用的就有 VBScript 和 JScript 了;VBScript 的好處是有對話框,JScript沒有(alert等只能在網頁中使用),而JScript 的代碼條理清晰一些,并且功能強大,可以使用正則表達式等功能。
于是乎,寫了下面的腳本,各位大蝦請看代碼:
1//********************************************************************
2// Copymiddle 2006 Zealic,All middle keeped.
3//********************************************************************
4//** 環境變量名
5//** 設置環境變量名,這些值影響環境變量的名字,建議不要修改
6
7var VN_PATH = "PATH";
8var VN_PROFILE = "PROFILE";
9var VN_PROFILE_USER = "PROFILE_USER";
10var VN_VOLATILE_PROFILE = "VOLATILE_PROFILE";
11var VN_TEMP = "TEMP";
12
13
14//********************************************************************
15//** 設置
16
17var m_Prefix = "GUEST_";
18var m_UserName = "Zealic";
19var m_Profile = "D://Profile";
20var m_VoltProfile = "F://VolatileProfile";
21var m_UserPath = "C://WINDOWS//Microsoft.NET//Framework//v2.0.50727;"
22 + "D://java//JRE//Currently//bin";
23
24//調用函數以設置
25SetEnvironment(m_Prefix,m_UserName,m_Profile,m_VoltProfile,m_UserPath);
26
27
28//********************************************************************
29//** 函數定義
30
31// 設置環境變量
32// prefix : 環境變量名的前綴
33// userName : 用戶名
34// profile : 重要文件目錄
35// voltProfile : 非重要文件目錄
36// userPath : 用戶 Path,設置該值以進行快捷運行程序
37function SetEnvironment(prefix,userName,profile,voltProfile,userPath)
38{
39 //開始設置
40 var currentName;
41 //===========================
42 // 設置系統重要目錄
43 currentName = prefix + VN_PROFILE;
44
45 SetSystemValue(currentName, profile);
46
47 // 設置設置用戶重要目錄
48 currentName = prefix + VN_PROFILE_USER;
49 SetSystemValue(currentName, "%" + prefix + VN_PROFILE + "%//" + userName);
50
51 // 設置設置系統非重要目錄
52 currentName = prefix + VN_VOLATILE_PROFILE;
53 SetSystemValue(currentName, voltProfile);
54
55 // 設置設置用戶非重要目錄
56 currentName = prefix + "VOLATILE_PROFILE_USER";
57 SetSystemValue(currentName, "%" + prefix + VN_VOLATILE_PROFILE + "%" + "http://" + userName);
58
59 // 設置臨時目錄
60 currentName = prefix + "TEMP";
61 SetSystemValue(currentName, "%" + prefix + VN_VOLATILE_PROFILE + "%" + "//Temporary");
62
63 //設置TEMP變量
64 var temp = "%" + prefix + VN_TEMP + "%";
65 SetUserValue("TMP", temp);
66 SetUserValue("TEMP", temp);
67 SetSystemValue("TMP", temp);
68 SetSystemValue("TEMP", temp);
69
70 // 設置 Path 和 自定義 Path 連接
71 var currentName = prefix + VN_PATH;
72 SetSystemValue(currentName, userPath);
73 // 檢測是否已經存在Path,如果不存在則設置
74 var regValue = new RegExp("%" + prefix + VN_PATH + "%","i");
75 if(!regValue.test(GetSystemValue("Path")))
76 {
77 SetSystemValue("Path",GetSystemValue("Path") + ";%" + prefix + VN_PATH + "%");
78 }
79}
80
81// 調試用函數
82function Debug(msg)
83{
84 wsh = new ActiveXObject("WScript.Shell");
85 wsh.Popup(msg);
86}
87
88// 獲取用戶環境變量
89function GetUserValue(name,value)
90{
91 wsh = new ActiveXObject("WScript.Shell");
92 return wsh.Environment("user").Item(name);
93}
94// 設置用戶環境變量
95function SetUserValue(name,value)
96{
97 wsh = new ActiveXObject("WScript.Shell");
98 wsh.Environment("user").Item(name) = value;
99}
100// 刪除用戶環境變量
101function RemoveUserValue(name)
102{
103 wsh = new ActiveXObject("WScript.Shell");
104 wsh.Environment("user").Remove(name) = value;
105}
106
107// 獲取系統環境變量
108function GetSystemValue(name,value)
109{
110 wsh = new ActiveXObject("WScript.Shell");
111 return wsh.Environment("system").Item(name);
112}
113// 設置系統環境變量
114function SetSystemValue(name,value)
115{
116 wsh = new ActiveXObject("WScript.Shell");
117 wsh.Environment("system").Item(name) = value;
118}
119// 刪除系統環境變量
120function RemoveSystemValue(name)
121{
122 wsh = new ActiveXObject("WScript.Shell");
123 wsh.Environment("system").Remove(name) = value;
124}
125
126
127
128
其中 Profile 為有價值的數據和文件 ,VolatileProfile 用過而無價值的數據和文件。這樣,我們就可以清楚的知道,Profile 要保留,VolatileProfile 則可以經常清理。
之后我還需要把 Desktop,My Document,Favorites文件夾遷移到 Profile 目錄中,然后就開始安裝數據庫。
不過嘛,今天太晚了,明天再說~~~
明天用用 JScript 操作注冊表以遷移系統的一些目錄到 Profile 和 VolatileProfile 目錄。
http://www.cnblogs.com/zealic/archive/2006/11/07/552433.html
新聞熱點
疑難解答