用 JavaScript 迁移目录

 更新时间:2006年12月18日 00:00:00   作者:  
这两天用虚拟机安装系统,准备用虚拟机把开发环境和数据库分离,想法如下:
      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

相关文章

  • SWFUpload多文件上传及文件个数限制的方法

    SWFUpload多文件上传及文件个数限制的方法

    这篇文章主要介绍了SWFUpload多文件上传及文件个数限制的方法,较为详细的分析了SWFUpload组件实现多文件上传的原理、使用方法与相关注意事项,需要的朋友可以参考下
    2016-05-05
  • Bootstrap每天必学之面板

    Bootstrap每天必学之面板

    Bootstrap每天必学之面板,面板(Panels)是Bootstrap框架新增的一个组件,其主要作用就是用来处理一些其他组件无法完成的功能,对面板感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 微信小程序实现的3d轮播图效果示例【基于swiper组件】

    微信小程序实现的3d轮播图效果示例【基于swiper组件】

    这篇文章主要介绍了微信小程序实现的3d轮播图效果,结合实例形式分析了微信小程序基于swiper组件相关属性设置、事件响应操作技巧,需要的朋友可以参考下
    2018-12-12
  • JavaScript数据结构之二叉树的删除算法示例

    JavaScript数据结构之二叉树的删除算法示例

    这篇文章主要介绍了JavaScript数据结构之二叉树的删除算法,简单分析了javascript删除数据结构中二叉树节点时所遇到的各种情况与相关的处理原理与算法实现技巧,需要的朋友可以参考下
    2017-04-04
  • 小程序实现简单列表功能

    小程序实现简单列表功能

    这篇文章主要为大家详细介绍了小程序实现简单列表功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • JS实现电商商品展示放大镜特效

    JS实现电商商品展示放大镜特效

    这篇文章主要为大家详细介绍了JS实现电商商品展示放大镜特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • 原生js实现轮播图

    原生js实现轮播图

    这篇文章主要为大家详细介绍了原生js实现轮播图的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • 30分钟快速掌握Bootstrap框架

    30分钟快速掌握Bootstrap框架

    Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架。接下来通过本文给大家介绍如何快速掌握Bootstrap,感兴趣的朋友一起学习吧
    2016-05-05
  • JS得到当前时间的方法示例

    JS得到当前时间的方法示例

    这篇文章主要介绍了JS得到当前时间的方法,结合具体实例形式对比分析了javascript获取日期时间的相关操作技巧,需要的朋友可以参考下
    2017-03-03
  • 原生JS发送异步数据请求

    原生JS发送异步数据请求

    这篇文章主要为大家详细介绍了原生JS发送异步数据请求的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06

最新评论