这两天用虚拟机安装系统,准备用虚拟机把开发环境和数据库分离,想法如下:
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 \”%\” \”\\\\\” username);
58
59 // 设置临时目录
60 currentname = prefix \”temp\”;
61 setsystemvalue(currentname, \”%\” prefix vn_volatile_profile \”%\” \”\”);
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 目录。