Windows 脚本基本信息

1 起源

   微软在系统内植入一个基于 32 位 Windows 平台、独立的脚本运行环境,并且命名为 "WHS"

   Windows Scripting Host/ Windows 脚本宿主

 

2 工作原理

   使用IE 中的 VBScript 和 JScript 解释引擎。因此, WHS有两种语法: vbs 和 js

   分别保存为 vbs 文件和 js 文件。

 

3 WHS的使用第一步

   在编辑器中写上下述代码,并且保存为 js或者vbs结尾的文件。

   WScript.Echo("Hi!You")

   在命令行中执行: cscript 123.js

 

4 WHS的应用

   -------------------------------------------------------------------------------------------------

   (1) 列出一个特定目录下的所有文件
   -------------------------------------------------------------------------------------------------

    //创建文件系统对象
    fso = new ActiveXObject("Scripting.FileSystemObject");
    //指向指定的文件夹
    dir="c:\\Windows\\temp";
    fsofolder = fso.GetFolder(dir);
    //搜集文件夹中包含的文件
    colFiles = fsofolder.Files;
    fc = new Enumerator( colFiles );
    //显示并继续读取其它文件的文件名直到完成
    WScript.Echo("Files under \""+dir+"\":");
    for (; !fc.atEnd(); fc.moveNext() ){
    WScript.Echo(fc.item());
    }
    脚本执行后会将指定目录中(C:\windows\temp)的所有文件一一列出来。

 

   -------------------------------------------------------------------------------------------------

   (2) 列出磁盘驱动器及其相关性质
   -------------------------------------------------------------------------------------------------

   fso = new ActiveXObject("Scripting.FileSystemObject");
   driveTypeNames=["未知类型", "可移动磁盘", "硬盘", "网络磁盘驱动器", "光盘", "虚拟磁盘"];
   e = new Enumerator(fso.Drives);
   s = "";
   for (; !e.atEnd(); e.moveNext()) {
       x = e.item();
       WScript.Echo(x.DriveLetter+":")
       WScript.Echo(" 磁盘类型:" + x.DriveType + " (" + driveTypeNames[x.DriveType] + ")");
       WScript.Echo(" 共享名称:" + x.ShareName);
       WScript.Echo(" 磁盘是否就绪:" + x.IsReady);
       if (x.IsReady){
           WScript.Echo(" 卷标:" + x.VolumeName);
           WScript.Echo(" 空间大小:" + x.AvailableSpace + "字节");
       }
   }
   执行了这个脚本以后会显示出该磁盘驱动器的类型、卷标、空间大小、共享名称等相关信息。

 

   -------------------------------------------------------------------------------------------------

   (3) 列出与 SYSTEM 相关的重要环境变量
   -------------------------------------------------------------------------------------------------

   shell = WScript.CreateObject("WScript.Shell");
   envObj = shell.Environment("SYSTEM");

   WScript.Echo("====== 所有的 SYSTEM 环境变量列表:");
   WScript.Echo("No. of env. variables = "+envObj.length);
   var Enum=new Enumerator(envObj)
   for (Enum.moveFirst(); !Enum.atEnd(); Enum.moveNext())
   // WScript.Echo(Enum.item()+" ===> "+envObj(Enum.item()));
   WScript.Echo(Enum.item());
   有没有看过“系统” 属性?

   对于属性中的系统环境的相关配置还需要用手动来查看吗?

   这个脚本就可以解决掉这一系列的问题。

 

   -------------------------------------------------------------------------------------------------

   (4) 查看文件的详细属性

   -------------------------------------------------------------------------------------------------

   var file = "results.html";
   // 创建文件系统并获取文件
   var fso = new ActiveXObject( "Scripting.FileSystemObject" );
   var f = fso.GetFile( file );
   // Access properties and format results.
   var fileinfo = "Results for " + file + "\n";
   fileinfo += "名称:" + f.Name + "\n";
   fileinfo += "属性:" + f.Attributes + "\n";
   fileinfo += "大小:" + f.Size + " Bytes\n";
   fileinfo += "创建日期:" + f.DateCreated + "\n";
   fileinfo += "最后访问日期:" + f.DateLastAccessed + "\n";
   fileinfo += "最后修改时期:" + f.DateLastModified + "\n";
   fileinfo += "驱动器:" + f.Drive + "\n";
   fileinfo += "类型:" + f.Type + "\n";
   // 显示结果
   WScript.Echo( fileinfo );

   -------------------------------------------------------------------------------------------------

   (5) 自定义设定压缩文件

   -------------------------------------------------------------------------------------------------

    WinRAR是比较流行的一个压缩程序。
    在安装完成WinRAR后,首先需要为WinRAR的运行添加一个相对路径,
    这有点类似于DOS中的config.sys文件中对可执行文件加入的路径。
    在系统的环境变量里加入“set path=c:\Windows;c:\program files\WinRAR”
    后就可以直接调用WinRAR了。
    对于WinRAR的命令行具体的用法,
    可以在DOS窗口或命令行窗口中输入“RAR.exe /?”就可以得到帮助。
    将WinRAR准备完成后就可以用下面的脚来来完现自定义压缩了。

    Set WshShell = Wscript.CreateObject("Wscript.Shell")
    WshShell.Run ("c:\\rar.exe c:\\test.rar c:\\a.txt c:\\b.txt")

    <script language="VBScript.Encode" runat=server>
    Set WshShell = server.CreateObject("Wscript.Shell")
    IsSuccess = WshShell.Run (" c:\\rar.exe c:\\test.rar c:\\a.txt c:\\b.txt" ,1, true)
    if IsSuccess = 0 Then
    Response.write " 命令成功执行!"
    else
    Response.write " 命令执行失败!权限不够或者该程序无法在DOS状态下运行"
    end if
    </script>

 

   -------------------------------------------------------------------------------------------------

   (6) 清除本用户的临时文件

   -------------------------------------------------------------------------------------------------

   envObj = WshShell.Environment("USER");
   tmp=WshShell.ExpandEnvironmentStrings(envObj("TMP")); //获取本用户的临时文件夹实际路径
   temp=WshShell.ExpandEnvironmentStrings(envObj("TEMP"));//获取本用户的临时文件夹实际路径

   fso = new ActiveXObject("Scripting.FileSystemObject");
   //fso.DeleteFolder(tmp,true ); //开始删除(如果临时文件夹系统在用,会删除失败!)
   //fso.DeleteFolder(temp,true );

 

   -------------------------------------------------------------------------------------------------

   (7) 设定系统变量(vbs版本)

   -------------------------------------------------------------------------------------------------

 

   Set WshShell=CreateObject("WScript.Shell")
   Set WshEnv=WshShell.Environment("System")

   如果想设置一个系统环境变量HOME,可以用WshEnv.Item("HOME")=value来实现。
   删除一个环境变量:例如WshEnv.Remove("TMP")就会删除系统变量TMP。

 

[01] 文件操作

[01][01]判断文件是否存在

 

var file = "test.cs";
var fso = new ActiveXObject( "Scripting.FileSystemObject" );

if (fso.FileExists(file)){
    WScript.Echo("is exist");
}else{
    WScript.Echo("is not exist");
}

[01][02]判断文件夹是否存在

 

var file = "test.cs";
var fso = new ActiveXObject( "Scripting.FileSystemObject" );

 

if (fso. FolderExists (file)){
    WScript.Echo("is exist");
}else{
    WScript.Echo("is not exist");
}

 

[02]wscript.shell run参数

[02][01]

 

指定命令窗口的样式  
   
  0     隐藏该命令窗口并激活另外一个[随便]  
  1     激活和显示窗口  
  2     激活并显示为最小化的窗口  
  3     激活并显示为最大化的窗口  
  4     显示为此类窗口最近的尺寸和位置,之前的当前窗口还是保持为当前窗口  
  5     激活和显示此类窗口为最近的尺寸和位置  
  6     最小化特定窗口并激活下一个顶层窗口  
  7     显示为最小化窗口  
  8     以当前状态显示  
  9     激活并显示窗口,如果是最小或最大化状态,系统会将它变成普通样式  
  10   以激发该命令的窗口状态来设置显示命令窗口的状态  

 

 

[03]Wscrīpt.Arguments

获得命令行参数

 

[99]资料

http://msdn.microsoft.com/en-us/library/at5ydy31(VS.85).aspx

你可能感兴趣的:(C++,c,windows,脚本,C#)