关于Windows系统脚本(jscript)

最近想做个简单的小工具用于自动改文件名,奈何windows原生shell太过鸡肋,只好用vbs,但是实在无法理解vb中很多语法规则,加之异常水土不服的代码风格,只好转而写jscript了,开始不愿用jscript也是因为微软api文档残缺。。。言归正传,jscript不是windows亲儿子,其大部分功能都是靠ActiveXObject实现的,相对的vbs就简单多了如提示框msgbox函数即可,如果只是为了弹这个框推荐vbs。

下面给出各个重要对象的创建方法,具体方法和属性在msdn上有相关文档。注意文档有点坑,文档写的是属性可能在jscript中是方法,或者相反,因为他是针对vbs写的文档。。。

下面列出的对象我也写了一些封装的对象,操作比直接用方便得多。

jscript文件系统对象:

WScript.CreateObject("Scripting.FileSystemObject");

读写文件操作目录必须的对象

Regexp对象的使用和javascript完全一样

只是windows对正则的高级特性支持不太理想如/(?<=windows)2000/反向预查不支持/(?dance)/命名分组不支持,基本和ie9对正则的支持是一致的

jscript Excel对象

相关属性方法太多请自行查阅msdn

WScript.CreateObject("Application.Excel");

jscript WShell对象

WScript.CreateObject("WScript.Shell");

此对象的popup方法可实现弹出对话框等功能。windows jscript alert方法(为了大家方便搜索)。

jscript InternetExplore对象

WScript.CreateObject("InternetExplorer.Application");

此对象可获得ie浏览器对象可编写自动访问某些站点的脚本,通过document属性操作页面和javascript完全一样

对此我自己实现了一个Jscript版的css选择器,支持不是很完善但比手动查找dom元素方便n倍

支持类名,id,tagname,属性选择器

对于元素继承关系支持后代选择和>选择器

Finder需要传入从internetExplorer对象获取的document

下面是代码

function Finder(docu){
	//将document与对象关联
	this.docu=docu;
	this.indexOf=function(arr,n){
		for(var i=0;i#\.\[]/)){
			throw "选择器语法错误";
		}
		if(selector.match(/^[^\s>]/)){
			selector=" "+selector;
		}
		context=context?context:this.docu;
		if(context.nodeType!=1){
			var testId=/^\s*#([\w\d\-_]+)\s*$/;
			var m=selector.match(testId);
			if(m!=null){
				return [context.getElementById(m[1])];
			}else{
				context=context.body;
			}
		}
		var data=this.parseData(selector);
		var waitValid=[];
		if(data.childType==">"){
			waitValid=context.children;
			waitValid=this.filter(waitValid,data);
		}else if(data.id||data.attr){
			function getAllChildren(node,call,that,data){
				var selfChildren=node.children;
				for(var i=0;i])([\-_\w\d]+)?(#[\w\d\-_])?((?:\.[\-_\w\d]+)*)((?:\[[^\]]+\])*)/;

 

你可能感兴趣的:(关于Windows系统脚本(jscript))