用 JavaScript 迁移目录

  • 来源: 互联网 作者: rocket   2008-03-20/13:27
  •  

    这两天用虚拟机安装系统,准备用虚拟机把开发环境和数据库分离,想法如下:
          1.开发环境为Host
          2.Guest 为数据库服务器,每一个服务器都是一个独立的虚拟机
           数据库包括,Oracle 9i、SQL Server 2005、MySQL

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

     

      1//********************************************************************
      2// Copymiddle 2006 Zealic,All middle keeped.
      3//********************************************************************
      4//** 环境变量名
      5//** 设置环境变量名,这些值影响环境变量的名字,建议不要修改
      6
      7var VN_PATH        = "PATH";
      8var VN_PROFILE        = "PROFILE";
      9var VN_PROFILE_USER    = "PROFILE_USER";
     10var VN_VOLATILE_PROFILE    = "VOLATILE_PROFILE";
     11var VN_TEMP        = "TEMP";
     12
     13
     14//********************************************************************
     15//** 设置
     16
     17var m_Prefix        = "GUEST_";
     18var m_UserName        = "Zealic";
     19var m_Profile        = "D:\\Profile";
     20var m_VoltProfile    = "F:\\VolatileProfile";
     21var m_UserPath        = "C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727;"
     22                + "D:\\Java\\JRE\\Currently\\bin";
     23
     24//调用函数以设置
     25SetEnvironment(m_Prefix,m_UserName,m_Profile,m_VoltProfile,m_UserPath);
     26
     27
     28//********************************************************************
     29//** 函数定义
     30
     31// 设置环境变量
     32//     prefix         : 环境变量名的前缀
     33//     userName    : 用户名
     34//     profile        : 重要文件目录
     35//     voltProfile    : 非重要文件目录
     36//     userPath    : 用户 Path,设置该值以进行快捷运行程序
     37function SetEnvironment(prefix,userName,profile,voltProfile,userPath)
     38{
     39    //开始设置
     40    var currentName;
     41    //===========================
     42    // 设置系统重要目录
     43    currentName = prefix + VN_PROFILE;
     44   
     45    SetSystemValue(currentName, profile);
     46
     47    // 设置设置用户重要目录
     48    currentName = prefix + VN_PROFILE_USER;
     49    SetSystemValue(currentName, "%" + prefix + VN_PROFILE + "%\\" + userName);
     50
     51    // 设置设置系统非重要目录
     52    currentName = prefix + VN_VOLATILE_PROFILE;
     53    SetSystemValue(currentName, voltProfile);
     54
     55    // 设置设置用户非重要目录
     56    currentName = prefix + "VOLATILE_PROFILE_USER";
     57    SetSystemValue(currentName, "%" + prefix + VN_VOLATILE_PROFILE + "%" + "\\" + userName);
     58
     59    // 设置临时目录
     60    currentName = prefix + "TEMP";
     61    SetSystemValue(currentName, "%" + prefix + VN_VOLATILE_PROFILE + "%" + "\\Temporary");
     62
     63    //设置TEMP变量
     64    var temp = "%" + prefix + VN_TEMP + "%";
     65    SetUserValue("TMP", temp);
     66    SetUserValue("TEMP", temp);
     67    SetSystemValue("TMP", temp);
     68    SetSystemValue("TEMP", temp);
     69
     70    // 设置 Path 和 自定义 Path 连接
     71    var currentName = prefix + VN_PATH;
     72    SetSystemValue(currentName, userPath);
     73    // 检测是否已经存在Path,如果不存在则设置
     74    var regValue = new RegExp("%" + prefix + VN_PATH + "%","i");
     75    if(!regValue.test(GetSystemValue("Path")))
     76    {
     77        SetSystemValue("Path",GetSystemValue("Path") + ";%" + prefix + VN_PATH + "%");
     78    }
     79}
     80
     81// 调试用函数
     82function Debug(msg)
     83{
     84    wsh = new ActiveXObject("WScript.Shell");
     85    wsh.Popup(msg);
     86}
     87
     88// 获取用户环境变量
     89function GetUserValue(name,value)
     90{
     91    wsh = new ActiveXObject("WScript.Shell");
     92    return wsh.Environment("user").Item(name);
     93}
     94// 设置用户环境变量
     95function SetUserValue(name,value)
     96{
     97    wsh = new ActiveXObject("WScript.Shell");
     98    wsh.Environment("user").Item(name) = value;
     99}
    100// 删除用户环境变量
    101function RemoveUserValue(name)
    102{
    103    wsh = new ActiveXObject("WScript.Shell");
    104    wsh.Environment("user").Remove(name) = value;
    105}
    106
    107// 获取系统环境变量
    108function GetSystemValue(name,value)
    109{
    110    wsh = new ActiveXObject("WScript.Shell");
    111    return wsh.Environment("system").Item(name);
    112}
    113// 设置系统环境变量
    114function SetSystemValue(name,value)
    115{
    116    wsh = new ActiveXObject("WScript.Shell");
    117    wsh.Environment("system").Item(name) = value;
    118}
    119// 删除系统环境变量
    120function RemoveSystemValue(name)
    121{
    122    wsh = new ActiveXObject("WScript.Shell");
    123    wsh.Environment("system").Remove(name) = value;
    124}
    125
    126
    127
    128

       其中 Profile 为有价值的数据和文件 ,VolatileProfile 用过而无价值的数据和文件。这样,我们就可以清楚的知道,Profile 要保留,VolatileProfile 则可以经常清理。

       之后我还需要把 Desktop,My Document,Favorites文件夹迁移到 Profile 目录中,然后就开始安装数据库。
       不过嘛,今天太晚了,明天再说~~~
       明天用用 JScript 操作注册表以迁移系统的一些目录到 Profile 和 VolatileProfile 目录。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多