用 JavaScript 迁移目录


这两天用虚拟机安装系统,准备用虚拟机把开发环境和数据库分离,想法如下:

  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:WINDOWSMicrosoft.NETFrameworkv2.0.50727;"
22        + "D:JavaJRECurrentlyin";
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 + "%" + "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 目录

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3