用 JavaScript 迁移目录


Posted in Javascript onDecember 18, 2006

这两天用虚拟机安装系统,准备用虚拟机把开发环境和数据库分离,想法如下:
      1.开发环境为Host
      2.Guest 为数据库服务器,每一个服务器都是一个独立的虚拟机
       数据库包括,Oracle 9i、SQL Server 2005、MySQL
   但是装系统,还要设置环境变量,以减少系统盘的占用和增加性能,这就需要迁移系统盘的一些目录了,比如IE临时目录,临时文件夹,Applocation Data;此外,我们还需要把重要的文件夹移动到其他分区,以避免在系统盘发生事故或者想要恢复的时候,重要数据(MyDocument,收藏夹,程序配置等)不受影响。
   手动修改环境变量和注册表值太麻烦了,因为我每次装系统都要修改那么一次,这次实在受够了,心里一发狠。好,我写个脚本把你搞定!
   BAT是不能设置系统环境变量的,此外可用的就有 VBScript 和 JScript 了;VBScript 的好处是有对话框,JScript没有(alert等只能在网页中使用),而JScript 的代码条理清晰一些,并且功能强大,可以使用正则表达式等功能。
   于是乎,写了下面的脚本,各位大虾请看代码: 

//********************************************************************  
// Copymiddle 2006 Zealic,All middle keeped.  
//********************************************************************  
//** 环境变量名  
//** 设置环境变量名,这些值影响环境变量的名字,建议不要修改  
var VN_PATH        = "PATH";  
var VN_PROFILE        = "PROFILE";  
var VN_PROFILE_USER    = "PROFILE_USER";  
var VN_VOLATILE_PROFILE    = "VOLATILE_PROFILE";  
var VN_TEMP        = "TEMP";  
//********************************************************************  
//** 设置  
var m_Prefix        = "GUEST_";  
var m_UserName        = "Zealic";  
var m_Profile        = "D:\\Profile";  
var m_VoltProfile    = "F:\\VolatileProfile";  
var m_UserPath        = "C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727;"   
                + "D:\\Java\\JRE\\Currently\\bin";  
//调用函数以设置  
SetEnvironment(m_Prefix,m_UserName,m_Profile,m_VoltProfile,m_UserPath);  

//********************************************************************  
//** 函数定义  
// 设置环境变量  
//     prefix         : 环境变量名的前缀  
//     userName    : 用户名  
//     profile        : 重要文件目录  
//     voltProfile    : 非重要文件目录  
//     userPath    : 用户 Path,设置该值以进行快捷运行程序  
function SetEnvironment(prefix,userName,profile,voltProfile,userPath)  
{  
    //开始设置  
    var currentName;  
    //===========================  
    // 设置系统重要目录  
    currentName = prefix + VN_PROFILE;  
    SetSystemValue(currentName, profile);  
    // 设置设置用户重要目录  
    currentName = prefix + VN_PROFILE_USER;  
    SetSystemValue(currentName, "%" + prefix + VN_PROFILE + "%\\" + userName);  
    // 设置设置系统非重要目录  
    currentName = prefix + VN_VOLATILE_PROFILE;  
    SetSystemValue(currentName, voltProfile);  
    // 设置设置用户非重要目录  
    currentName = prefix + "VOLATILE_PROFILE_USER";  
    SetSystemValue(currentName, "%" + prefix + VN_VOLATILE_PROFILE + "%" + "\\" + userName);  
    // 设置临时目录  
    currentName = prefix + "TEMP";  
    SetSystemValue(currentName, "%" + prefix + VN_VOLATILE_PROFILE + "%" + "\\Temporary");  
    //设置TEMP变量  
    var temp = "%" + prefix + VN_TEMP + "%";  
    SetUserValue("TMP", temp);  
    SetUserValue("TEMP", temp);  
    SetSystemValue("TMP", temp);  
    SetSystemValue("TEMP", temp);  
    // 设置 Path 和 自定义 Path 连接  
    var currentName = prefix + VN_PATH;  
    SetSystemValue(currentName, userPath);  
    // 检测是否已经存在Path,如果不存在则设置  
    var regValue = new RegExp("%" + prefix + VN_PATH + "%","i");  
    if(!regValue.test(GetSystemValue("Path")))  
    {  
        SetSystemValue("Path",GetSystemValue("Path") + ";%" + prefix + VN_PATH + "%");  
    }  
}  
// 调试用函数  
function Debug(msg)  
{  
    wsh = new ActiveXObject("WScript.Shell");  
    wsh.Popup(msg);  
}  
// 获取用户环境变量  
function GetUserValue(name,value)  
{  
    wsh = new ActiveXObject("WScript.Shell");  
    return wsh.Environment("user").Item(name);  
}  
// 设置用户环境变量  
function SetUserValue(name,value)  
{  
    wsh = new ActiveXObject("WScript.Shell");  
    wsh.Environment("user").Item(name) = value;  
}  
// 删除用户环境变量  
function RemoveUserValue(name)  
{  
    wsh = new ActiveXObject("WScript.Shell");  
    wsh.Environment("user").Remove(name) = value;  
}  
// 获取系统环境变量  
function GetSystemValue(name,value)  
{  
    wsh = new ActiveXObject("WScript.Shell");  
    return wsh.Environment("system").Item(name);  
}  
// 设置系统环境变量  
function SetSystemValue(name,value)  
{  
    wsh = new ActiveXObject("WScript.Shell");  
    wsh.Environment("system").Item(name) = value;  
}  
// 删除系统环境变量  
function RemoveSystemValue(name)  
{  
    wsh = new ActiveXObject("WScript.Shell");  
    wsh.Environment("system").Remove(name) = value;  
} 

   其中 Profile 为有价值的数据和文件 ,VolatileProfile 用过而无价值的数据和文件。这样,我们就可以清楚的知道,Profile 要保留,VolatileProfile 则可以经常清理。
   之后我还需要把 Desktop,My Document,Favorites文件夹迁移到 Profile 目录中,然后就开始安装数据库。 
   不过嘛,今天太晚了,明天再说~~~
   明天用用 JScript 操作注册表以迁移系统的一些目录到 Profile 和 VolatileProfile 目录。
http://www.cnblogs.com/zealic/archive/2006/11/07/552433.html
Javascript 相关文章推荐
jQuery 性能优化指南(3)
May 21 Javascript
Javascript 二维数组
Nov 26 Javascript
最短的IE判断代码
Mar 13 Javascript
javascript如何动态加载表格与动态添加表格行
Nov 27 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
JavaScript基础知识点归纳(推荐)
Jul 09 Javascript
javascript实现的图片预览功能
Mar 25 Javascript
详解angular用$sce服务来过滤HTML标签
Apr 11 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
Jul 19 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
Oct 28 Javascript
Javascript代码混淆综合解决方案-Javascript在线混淆器
Dec 18 #Javascript
XP折叠菜单&仿QQ2006菜单
Dec 16 #Javascript
prototype 1.5相关知识及他人笔记
Dec 16 #Javascript
飞鱼(shqlsl) javascript作品集
Dec 16 #Javascript
XHTML-Strict 内允许出现的标签
Dec 11 #Javascript
JS的IE和Firefox兼容性集锦
Dec 11 #Javascript
不错的新闻标题颜色效果
Dec 10 #Javascript
You might like
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
提高php编程效率技巧
2015/08/13 PHP
PHP加密解密实例分析
2015/12/25 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
初步认识JavaScript函数库jQuery
2015/06/18 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
深入理解Angular2 模板语法
2016/08/07 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
基于jQuery插件jqzoom实现的图片放大镜效果示例
2017/01/23 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
Vue 请求传公共参数的操作
2020/07/31 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python中list初始化方法示例
2016/09/18 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
Python创建一个空的dataframe,并循环赋值的方法
2018/11/08 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
使用Pandas对数据进行筛选和排序的实现
2019/07/29 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
css3实现3D文本悬停改变效果的示例代码
2019/01/16 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题
护理专业自荐信
2013/12/03 职场文书
新春文艺演出主持词
2014/03/27 职场文书
离婚协议书格式范本
2016/03/18 职场文书