wangunix 发表于 2013-1-27 05:09:37

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 + ")");
       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。
 
文件操作
判断文件是否存在
 
var file = "test.cs";
var fso = new ActiveXObject( "Scripting.FileSystemObject" );

if (fso.FileExists(file)){
    WScript.Echo("is exist");
}else{
    WScript.Echo("is not exist");
}
判断文件夹是否存在
 
var file = "test.cs";
var fso = new ActiveXObject( "Scripting.FileSystemObject" );
 
if (fso.FolderExists(file)){
    WScript.Echo("is exist");
}else{
    WScript.Echo("is not exist");
}
 
wscript.shell run参数

 
指定命令窗口的样式  
  
  0    隐藏该命令窗口并激活另外一个[随便]  
  1    激活和显示窗口  
  2    激活并显示为最小化的窗口  
  3    激活并显示为最大化的窗口  
  4    显示为此类窗口最近的尺寸和位置,之前的当前窗口还是保持为当前窗口  
  5    激活和显示此类窗口为最近的尺寸和位置  
  6    最小化特定窗口并激活下一个顶层窗口  
  7    显示为最小化窗口  
  8    以当前状态显示  
  9    激活并显示窗口,如果是最小或最大化状态,系统会将它变成普通样式  
  10   以激发该命令的窗口状态来设置显示命令窗口的状态  
 
 
Wscrīpt.Arguments
获得命令行参数
 
资料
http://msdn.microsoft.com/en-us/library/at5ydy31(VS.85).aspx
页: [1]
查看完整版本: Windows 脚本基本信息