`
zu14
  • 浏览: 464639 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类

转自 陈荣 的 一个 删VSS 信息的脚本, 做参考

阅读更多
/// Global ------------------------------------------------------

var deleteByForce = true;
var consoleOnly = true;
var defaultTimeOut = 1;
var showDetails = false;

var WSShell;
var fso;
var currentFolder;
var deletedFiles = 0;
var modifiedFiles = 0;
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var CharSetDefault = -2, CharSetUnicode = -1, CharSetAscii = 0;
var AttrNormal = 0, AttrReadOnly = 1, AttrHidden = 2, AttrSystem = 4,
AttrVolume 
= 8, AttrDirectory = 16, AttrArchive = 32, AttrAlias = 1024,
AttrCompressed 
= 2048;


Init();
Main();
//Test();


/// Main ------------------------------------------------------

function Main() {
    
    
var text;
        
    
// say hello
    text =     "Remove from SourceSafe has started.";
    Out(text,
true);
    COut(
"Working folder: \r\n"+ currentFolder);
    
    
    
// delete files 
    // *.suo, *.eto, *.vssscc, *.vspscc, vssver.scc, mssccprj.scc
    DeleteFiles("[.]*([.]suo$|[.]eto$|[.]vssscc$|[.]vspscc$|vssver[.]scc$|mssccprj[.]scc$)");
    
    
// modify files
    // *.etp, *.sln, *.csproj
    ModifyFiles("[.]*([.]etp$|[.]sln$|[.]csproj$)");
    
    
// say goodbye 
    text =     "Remove from SourceSafe has finished. \r\n\r\n"
            
+ "Deleted files:   \t" + deletedFiles + "\r\n"
            
+ "Modified files:  \t" + modifiedFiles + "\r\n";
    Out(text,
false);
}

function Init() {
    
    
// detect command line
    try {
        WScript.StdOut.WriteLine(
" ");
    } 
catch (e) {
        consoleOnly 
= false;
    }
    
    
// initialize
    WSShell = new ActiveXObject("WScript.Shell");
    fso 
= new ActiveXObject("Scripting.FileSystemObject");
    currentFolder 
= GetCurrentFolder();
}

/// Files ------------------------------------------------------

// getcurrent folder 
function GetCurrentFolder() {
    
    
return fso.GetFolder(fso.GetFile(WScript.ScriptFullName).ParentFolder);
}


// delete files by mask
function DeleteFiles(mask) {
    
var files = FindFiles(mask);
    
var i;
    
    Out(
"Deleting files"true);
    
    
for (i=0; i<files.length; i++) {
        
try {
            fso.DeleteFile(files[i], deleteByForce);
            deletedFiles 
++;
        } 
catch (e) {
            WScript.echo(e.Message);
        }
    }
    
    
if (deletedFiles == 0) {
        COut(
"No files were deleted.");
    }
}


// find files 
function FindFiles(mask) {
    
return GetFiles(currentFolder, mask);
}

// determine, if filename matches given mask
function MatchesMask(file, mask) {
    
return new RegExp(mask).test(file);
}

// get files in current folder & subfolders
function GetFiles(folder, mask) {
    
var result = new Array();
    
// do files in current folder
    var files = new Enumerator(folder.Files);
    
for (; !files.atEnd(); files.moveNext()) {
        
if (MatchesMask(files.item(), mask)) {
            result.push(
"" + files.item());
        }
    }
    
// do subfolders in current folder
    var folders = new Enumerator(folder.SubFolders);
    
for (; !folders.atEnd(); folders.moveNext()) {
        result 
= result.concat(GetFiles(folders.item(), mask));
    }
    
return result;
}

/// Output ------------------------------------------------------

// output 
function Out(text, useTimeOut) {
    
if (useTimeOut) { 
        useTimeOut 
= defaultTimeOut;
    } 
else {
        useTimeOut 
= -1
    }

    
if (consoleOnly) {
        WScript.StdOut.WriteLine(text);
    } 
else {
        WSShell.Popup(text, useTimeOut, 
"Remove from SourceSafe");
    }
}

// output 
function COut(text, useTimeOut) {
    
if (useTimeOut) { 
        useTimeOut 
= defaultTimeOut;
    } 
else {
        useTimeOut 
= -1
    }

    
if (consoleOnly) {
        WScript.StdOut.WriteLine(text);
    } 
}


/// Modify ------------------------------------------------------

// modify all files matching given mask
function ModifyFiles(mask) {
    
    
var files = FindFiles(mask);
    
var i;
    
    Out(
"Modifying files"true);
    
    
for (i=0; i<files.length; i++) {
//            WScript.echo(files[i]);
//
        try {
            ModifyFile(fso.GetFile(files[i]));
            modifiedFiles 
++;
//        } catch (e) {
//
            WScript.echo(e.description);
//
        }
    }

    
if (modifiedFiles == 0) {
        COut(
"No files were modified.");
    }
}


function ModifyFile(file) {

    
switch (fso.GetExtensionName(file.Path).toLowerCase()) {
        
case "etp":
            ModifyFileETP(file);
            
break;
        
case "sln":
            ModifyFileSLN(file);
            
break;
        
case "csproj":
            ModifyFileCSPROJ(file);
            
break;
    }
}

function ReadFile(file) {
    
var stream = file.OpenAsTextStream(ForReading, CharSetDefault);
    text 
= stream.ReadAll();
    stream.Close();
    
return text;
}

function WriteFile(file, text) {
    
var ro = ((file.Attributes & AttrReadOnly) != 0);
    
if (ro) file.Attributes -= AttrReadOnly;
    
var stream = file.OpenAsTextStream(ForWriting, CharSetDefault);
    stream.Write(text);
    stream.Close();
    
if (ro) file.Attributes += AttrReadOnly;
}


// remove element <SourceControlSettings></SourceControlSettings>
function ModifyFileETP(file) {

    
var text;
    
var re1 = new RegExp('(\\s*<SourceControlSettings(\\s[^>]*)?>[.\\s\\S\\r\\n]*<\\/SourceControlSettings>)','m');
    
    text 
= ReadFile(file);
    text 
= text.replace(re1, "");
    WriteFile(file, text);

}

// remove section GlobalSection(SourceCodeControl) = preSolution  EndGlobalSection
function ModifyFileSLN(file) {
    
    
var text;
    
var re1 = new RegExp('(\\s*GlobalSection\\(SourceCodeControl\\))[.\\r\\n\\s\\S]*?EndGlobalSection','m');

    text 
= ReadFile(file);
    text 
= text.replace(re1, "");
    WriteFile(file, text);
    
}

// remove lines with SccProjectName, SccLocalPath, SccAuxPath, SccProvider
function ModifyFileCSPROJ(file) {

    
var text;
    
var re1 = new RegExp('(^\\s*SccProjectName = .*$)', 'm');
    
var re2 = new RegExp('(^\\s*SccLocalPath = .*$)', 'm');
    
var re3 = new RegExp('(^\\s*SccAuxPath = .*$)', 'm');
    
var re4 = new RegExp('(^\\s*SccProvider = .*$)', 'm');

    text 
= ReadFile(file);
    text 
= text.replace(re1, "");
    text 
= text.replace(re2, "");
    text 
= text.replace(re3, "");
    text 
= text.replace(re4, "");
    WriteFile(file, text);
    
}
分享到:
评论

相关推荐

    [信息论与编码(第4版)][孙丽华,陈荣伶][习题解答].rar

    熵是衡量信息不确定性的一个度量,互信息则描述了两个随机变量之间的关联程度。 在信息论中,信源编码是为了减少冗余并使信息更高效地传输或存储。常见的信源编码技术有霍夫曼编码和游程编码。霍夫曼编码是一种变长...

    [信息论与编码(第4版)][孙丽华,陈荣伶][习题解答].rar.zip

    本书不仅涵盖理论知识,而且配套了详尽的习题解答,为学习者提供了一个全面而实用的学习工具。 从信息论的基本概念开始,教材引导学生逐步深入了解信息的本质。信息熵作为衡量信息不确定性的指标,在信息论中占据着...

    永磁同步电机控制系统_陈荣著

    学习永磁电机、永磁电机控制的很好的入门教程。希望大家多多支持

    永磁同步电机控制系统-陈荣著-扫描书签目录版

    永磁同步电机控制系统

    软件设计说明书R信管陈荣喆.doc

    - 动态模型:通过序列图或协作图展现系统行为,描述不同对象如何在时间上相互作用来完成一个特定的用例。 5. **逻辑视图** - 总览:提供系统的高层次设计,展示主要模块和组件的分布。 - 重要Package的介绍:...

    信息论与纠错编码PPT

    在高等院校中,信息工程类专业是最为热门的专业之一,信息技术已经改变了很多传统电子类专业的知识结构。在这种形式下,许多高校都在相关专业开设了信息论方面的相关课程,作为本科生、研究生的必修或选修课。一...

    基于Oracle ODM的数据挖掘研究.pdf

    Oracle ODM正是基于这一理念,为企业提供了一个集成的信息处理和分析平台。 文章通过一个具体的实例,详细说明了如何使用Oracle ODM结合自适应贝叶斯网络算法进行数据挖掘。实例展示了Oracle ODM在实践中的易用性和...

    芯片信息加载故障诊断的故障树分析法.pdf

    在导航定位学报的这篇论文中,陈荣与刘富两位作者对导航接收机芯片信息加载过程中出现的故障问题进行了深入的研究。他们针对当时芯片信息加载故障诊断中存在的问题,提出了故障树分析法(FTA)作为解决方案。在本篇...

    一种优化自正则化非负编码的图像集人脸识别方法.pdf

    【文章摘要】 本文提出了一种优化自正则化非负编码(Self-regularized Nonnegative Coding,简称SRNNC)的图像...这一方法对于人脸识别领域的研究和发展具有重要的参考价值,为后续相关工作提供了新的思路和技术基础。

    基于机器人视觉图像的路径规划算法研究.pdf

    在服务机器人领域,一个能够基于视觉图像进行有效路径规划的机器人可以提供更好的导航服务,提升用户体验;在智能车辆领域,通过视觉系统的路径规划算法能够使车辆在复杂的城市交通环境中进行准确导航和避障。 本...

    电子商务对外贸企业竞争优势的影响研究文献综述.pdf

    赵建光和陈荣等人提出了应对措施,如企业应积极适应技术变革,提升信息处理能力,构建安全的电子交易平台。 总结来说,电子商务通过降低成本、提高效率、创新商业模式、拓展市场以及增强信息处理能力,对外贸企业的...

    恒宝通:2021年半年度报告.PDF

    公司负责人林新利、主管会计工作负责人赵旭锋及会计机构负责人(会计主管人员)陈荣藻保证半年度报告中财务报告的真实、准确、完整。 其他信息 公司未披露未出席董事会审议半年度报告的董事信息,且未被出具非标准...

    机械毕业设计——汽车轮毂盘的反求造型研究(论文+DWG图纸).zip

    标题中的“汽车轮毂盘的反求造型研究”是一个典型的机械工程领域中的课题,涉及到的知识点包括反求工程(Reverse Engineering)、汽车零部件设计、轮毂结构分析以及CAD(计算机辅助设计)技术。在这个毕业设计中,...

    武汉市交通碳排放达峰路径研究.pdf

    武汉市交通碳排放达峰路径研究.pdf

    学困生转化记录.doc

    教师需要具备耐心和智慧,通过个性化辅导、心理疏导、习惯培养、同伴互助以及家庭学校的紧密合作等多维度的工作,持续关注和调整教学策略,以帮助每一个学困生找到适合自己的学习路径,最终实现学习上的进步和成长。

    大学期末班会的主持词.docx

    这在大学生活中是非常重要的,有助于形成一个健康、和谐的学习生活环境。 9. **活动策划与执行**:班会的组织流程展示了如何策划和实施一次成功的集体活动,包括主题选定、内容设计、人员分工等,这些都是大学生...

    公司安全生产领导小组架构图.doc

    在企业的日常运营中,安全生产是至关重要的一个环节,它关乎员工的生命安全,企业的发展稳定,乃至社会的和谐稳定。一个完善的安全生产领导小组架构是保障企业安全生产工作有序进行的基础。以下,我们将详细解析公司...

    基于FPGA的大型养路机械程序控制器的设计.pdf

    根据给定的文件信息,以下是关于“基于FPGA的大型养路机械程序控制器的设计”这一主题的知识点: 1. FPGA的应用领域 FPGA(现场可编程门阵列)是一种可以通过编程来实现特定功能的半导体集成电路。由于其可编程特性...

    湖南省益阳市箴言中学2017_2018学年高二语文上学期12月月考试题

    在探讨中国近代文学史的重要变革时,白话文运动无疑是一个极为关键的节点。它不仅改变了文学创作的语言形式,更为深刻地影响了中国文化的面貌,尤其是文学作品与民众之间的关系。这场运动从晚清时期开始萌芽,经历了...

Global site tag (gtag.js) - Google Analytics