用 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

相关文章

  • javascript 变量作用域 代码分析

    javascript 变量作用域 代码分析

    作用域(scope)是javascript中一项令人棘手的的特性。所有面向对象编程语言都有某种形式的作用域,不过和把这个概念放在什么上下文中有关。在javascript里,作用域是由函数划分的。
    2009-06-06
  • JavaScript将数组转换为链表的方法

    JavaScript将数组转换为链表的方法

    这篇文章主要介绍了JavaScript将数组转换为链表的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 微信小程序实现下载进度条的方法

    微信小程序实现下载进度条的方法

    本篇文章主要介绍了微信小程序实现下载进度条的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • echarts提示框tooltip被遮挡的解决办法分享

    echarts提示框tooltip被遮挡的解决办法分享

    这篇文章主要给大家介绍了关于echarts提示框tooltip被遮挡的解决办法, 在制作图表中,发现有时候tooltip会被线条遮挡或者被柱子折线遮挡,这种情况会偶尔出现,需要的朋友可以参考下
    2023-08-08
  • js实现图片左右滚动效果

    js实现图片左右滚动效果

    本文主要介绍了js实现图片左右滚动效果的实例,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 详解JavaScript设计模式中的享元模式

    详解JavaScript设计模式中的享元模式

    享元模式是一种用于性能优化的模式。享元模式的核心是运用共享技术来有效支持大量细粒度的对象.如果系统中创建了大量类似的对象而导致内存占用过高,本文通过介绍书中文件上传的优化案例来说明享元模式的使用方式和作用,需要的朋友可以参考下
    2023-06-06
  • Javascript 异步加载详解(浏览器在javascript的加载方式)

    Javascript 异步加载详解(浏览器在javascript的加载方式)

    本文总结一下浏览器在 javascript 的加载方式,需要的朋友可以参考下
    2012-05-05
  • TypeScript中never类型的妙用详解

    TypeScript中never类型的妙用详解

    TypeScript 是一种静态类型的编程语言,它可以让我们在编写 JavaScript 代码时,提前发现并避免一些潜在的错误,本文主要为大家介绍了TypeScript中never类型的妙用,感兴趣的可以了解下
    2023-11-11
  • js控制TR的显示隐藏

    js控制TR的显示隐藏

    在很多现实的场景中,有的文本框我们希望在选择“是”的按钮之后才出现,这就需要js控制TR的隐藏和显示,如何控制,本文为大家揭晓
    2016-03-03
  • javascript实现网页背景烟花效果的方法

    javascript实现网页背景烟花效果的方法

    这篇文章主要介绍了javascript实现网页背景烟花效果的方法,涉及javascript数学运算及页面元素动态操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08

最新评论