用 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 相关文章推荐
xss文件页面内容读取(解决)
Nov 28 Javascript
JS target与currentTarget区别说明
Aug 28 Javascript
浅析JavaScript中的常用算法与函数
Nov 21 Javascript
Javascript中For In语句用法实例
May 14 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
Sep 06 Javascript
Angular.JS学习之依赖注入$injector详析
Oct 20 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
iframe与主框架跨域相互访问实现方法
Sep 14 Javascript
React Navigation 使用中遇到的问题小结
May 08 Javascript
你可能从未使用过的11+个JavaScript特性(小结)
Jan 08 Javascript
基于JavaScript的数据结构队列动画实现示例解析
Aug 06 Javascript
详解ES6实现类的私有变量的几种写法
Feb 10 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
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
php实现图片上传时添加文字和图片水印技巧
2020/04/18 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
php四种定界符详解
2017/02/16 PHP
php和html的区别点详细总结
2019/09/24 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
2014/02/11 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
Javascript之String对象详解
2016/06/08 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
微信小程序对接七牛云存储的方法
2017/07/30 Javascript
详解angular笔记路由之angular-router
2017/09/12 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
详解Python文本操作相关模块
2017/06/22 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
利用Python代码实现数据可视化的5种方法详解
2018/03/25 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
英国最大的在线运动补充剂商店:Discount Supplements
2017/06/03 全球购物
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
回门宴答谢词
2014/01/13 职场文书
大堂副理的岗位职责范文
2014/02/17 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
应届毕业生求职信范文
2014/05/08 职场文书