用 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 相关文章推荐
IE6/7/8中Option元素未设value时Select将获取空字符串
Apr 07 Javascript
js 程序执行与顺序实现详解
May 13 Javascript
自写的jQuery异步加载数据添加事件
May 15 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 Javascript
javascript实现实时输出当前的时间
Apr 27 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
Aug 05 Javascript
你所未知的3种Node.js代码优化方式
Feb 25 Javascript
AngularJS过滤器详解及示例代码
Aug 16 Javascript
同步异步动态引入js文件的几种方法总结
Sep 23 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
Sep 25 Javascript
django中使用vue.js的要点总结
Jul 07 Javascript
让mocha支持ES6模块的方法实现
Jan 14 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 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
JQuery入门—编写一个简单的JQuery应用案例
2013/01/03 Javascript
用js写了一个类似php的print_r输出换行功能
2013/02/18 Javascript
jquery实现表单输入时提示文字滑动向上效果
2015/08/10 Javascript
AngularJS教程之MVC体系结构详解
2016/08/16 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
两种简单的跨域方法(jsonp、php)
2017/01/02 Javascript
深入理解React中何时使用箭头函数
2017/08/23 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
vue element-ui table组件动态生成表头和数据并修改单元格格式 父子组件通信
2019/08/15 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
vue v-model的用法解析
2020/10/19 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
pytyon 带有重复的全排列
2013/08/13 Python
python二叉树遍历的实现方法
2013/11/21 Python
Python生成不重复随机值的方法
2015/05/11 Python
Python转换时间的图文方法
2019/07/01 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
Python post请求实现代码实例
2020/02/28 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
北卡罗来纳州豪华家具和家居装饰店:Carolina Rustica
2018/10/30 全球购物
基层党建工作宣传标语
2014/06/24 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书