胡搞瞎搞JScript记(用JScript代替批处理文件)

    今天下午项目经理老蔡同志分配给我一个光荣任务,做一个批处理文件把某个文件夹下的.exe文件和所有子目录下的.exe文件复制到另外一个文件夹,并且不复制文件夹结构,也就是所有都放到目标目录下不分级。

    上网找了会资料没找着,后来在命令提示符下随便输入几个自己知道的命令看看帮助,发现XCopy很容易就可以实现复制指定目录下文件与所有子目录下文件到目标目录中,于是简单写了一段:

    xcopy F:\A\*.exe F:\B\ /S

    运行了下,好像可以哦~~于是就跟老蔡说OK啦!结果自己再测试下发现xcopy会把子目录结构也复制过去。。。。晕,那还不如自己复制粘贴呢。于是在命令行提示符窗口下又看了会xcopy的参数说明,就是找不到不复制目录结构的。。。emdgust.gif

    怎么办。。。还不如我写个C#程序来得快呢。。。可是要用这个程序的同事机器上好像没有.NET运行时啊,.NET运行时有时候就是很气人,关键时候经常发现对方没有装.NET运行环境,比如有时候要跟人家吹牛我做了什么好玩的,运行不了兴致都没了。72_72.gif

    用C写吧,打开VS,建了个命令行项目,然后。。。。怎么写?忘记啦。。。写C语言已经是快3年前的事情了,获取目录和子目录我都不记得用什么函数了。上网找了会,各式各样都有,唉,真烦~~不用C写了。angry_smile.gif

   想起昨天晚上翻旧电子书时看到《Windows脚本技术》里有讲到用JScript操作文件呢,于是赶快找出这本书。模仿里面的代码写了一段
   
None.gifvar  fso, f1;
None.giffso 
= new ActiveXObject("Scripting.FileSystemObject" );
None.giff1 
= fso.GetFile("c:\\test.txt");

   保存为.js文件, 双击,怎么又是用编辑器开了。。。右击,里面有个“在命令行中运行”,这个应该不是默认的吧,不管了,运行看看。结果啥也没有出现。。。

    赶紧再看看书上怎么说,原来下一章才开始讲Windows脚本舍主,嘿嘿,还有一节叫:运行脚本,看来我太心急了,再继续看看。

    原来可以做一个.wsf文件运行啊,而且还可以混合不同语言的脚本。。神奇啊。

    里面有这样一段示例代码:
    
None.gif<job id="IncludeExample">
ExpandedBlockStart.gifContractedBlock.gif   
<script language="JScript" src="FSO.JS"/>dot.gif
InBlock.gif   
<script language="VBScript">
InBlock.gif      ' 获得驱动器 C 的可用空间。
InBlock.gif      s 
= GetFreeSpace("c:")
InBlock.gif      WScript.Echo s
InBlock.gif   
<sScript>
InBlock.gif
</job>

    于是我举一反三,自己做了一个,嘿嘿,经过一番调试,终于做了一个可以复制目录和子目录下所有.exe文件到指定目录的wsf文件,哈哈。emteeth.gif

None.gif<job id="IncludeExample">
ExpandedBlockStart.gifContractedBlock.gif    
<script language="JScript" >dot.gif
InBlock.gif        
InBlock.gif        
var file = "*.exe";    //要复制的文件
InBlock.gif
        var des = "F:\\B";    //目标目录
InBlock.gif

InBlock.gif        
var fso,  f, fs, fc;
InBlock.gif
InBlock.gif        fso 
= new ActiveXObject("Scripting.FileSystemObject");    //文件系统控件
InBlock.gif
        
InBlock.gif        
try
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            fso.CopyFile(file, des);
ExpandedSubBlockEnd.gif        }

InBlock.gif        
catch(ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        f 
= fso.GetFolder(".\\");
InBlock.gif
InBlock.gif        fc 
= new Enumerator(f.SubFolders);
InBlock.gif
InBlock.gif         
for ( ; !fc.atEnd(); fc.moveNext())
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
try
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                fso.CopyFile(fc.item().Path 
+ "\\" + file, des);
ExpandedSubBlockEnd.gif            }

InBlock.gif            
catch(ex)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    
</script>
None.gif
</job>

    复制一段《Windows脚本技术》中对WSF文件的定义:

Windows 脚本文件 (*.wsf) 是含有可扩展标记语言 (XML) 代码的文本文档。它综合了几个可增强脚本灵活性的功能。由于 Windows 脚本文件不是特定于引擎的,因此它们可包含与 Windows 脚本兼容的任何脚本引擎中的脚本。它们充当容器。

使用 .wsf 文件,可以在创建脚本时使用以下功能:

.wsf 文件支持实现
Include 语句将函数从 VBScript 或 JScript 文件合并到 Windows 脚本宿主项目中。
多引擎每个文件使用多种脚本语言。
类型库将常数添加到代码中。
工具使用任何 XML 编辑器编辑文件。
一个文件中的多项作业将所有的代码存储在一个位置。

转载于:https://www.cnblogs.com/BG5SBK/archive/2006/05/16/Save_JScript_Into_WSF.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值