用 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 相关文章推荐
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
Jun 26 Javascript
Bootstrap3制作自己的导航栏
May 12 Javascript
tab栏切换原理
Mar 22 Javascript
jQuery实现动态控制页面元素的方法分析
Dec 20 jQuery
node实现基于token的身份验证
Apr 09 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
微信小程序绘制图片发送朋友圈
Jul 25 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
Vue记住滚动条和实现下拉加载的完美方法
Jul 31 Javascript
谈谈JavaScript中的垃圾回收机制
Sep 17 Javascript
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
react 路由Link配置详解
Nov 11 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 screw加密php源代码
2013/06/20 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
JS解密入门之凭直觉解
2008/06/25 Javascript
jQuery防止重复绑定事件的解决方法
2016/05/14 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
浅谈Vue-cli单文件组件引入less,sass,css样式的不同方法
2018/03/13 Javascript
详解React中setState回调函数
2018/06/14 Javascript
详解html-webpack-plugin插件(用法总结)
2018/09/12 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
JavaScript内置对象math,global功能与用法实例分析
2019/06/10 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
vue使用exif获取图片旋转,压缩的示例代码
2020/12/11 Vue.js
解析Python编程中的包结构
2015/10/25 Python
python爬取51job中hr的邮箱
2016/05/14 Python
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
python实现K最近邻算法
2018/01/29 Python
PyQt5每天必学之关闭窗口
2018/04/19 Python
python使用多进程的实例详解
2018/09/19 Python
python实现数据分析与建模
2019/07/11 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
Django values()和value_list()的使用
2020/03/31 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
什么是索引指示器
2012/08/20 面试题
我的网上商城创业计划书
2013/12/26 职场文书
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
房产公证委托书范本
2014/09/20 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
实习单位意见
2015/06/04 职场文书
趣味运动会简讯
2015/07/20 职场文书
MySQL慢查询优化解决问题
2022/03/17 MySQL
springboot为异步任务规划自定义线程池的实现
2022/06/14 Java/Android
canvas 中如何实现物体的框选
2022/08/05 Javascript