如何在服务器端调用winzip命令行对文件压缩和解压

时间:2008-01-26 20:44:00 

如何在服务器端调用winzip命令行对上传的多个文件打包压缩?

要解决这个问题,首先要了解一下Windows Scripting Host,简称为WSH!下面引用一下微软给的解释:

************************************************************************
* WSH是微软脚本技术系列中的一种,简单讲,就是提供了一种脚本环境, *
* 在这个环境中,预定义了一些对象,同时也可以使用COM里的其他对象。 *
* 他使用一种脚本引擎来对脚本解释执行,微软自己支持VBSCRIPT和JSCRIPT, *
* 第三方也可以开发自己的脚本引擎。 *
************************************************************************

具体点,就是你先编好一些脚本文件(微软自带例子若干,后缀.vbs或 .js),然后用一个程序对他解释执行,这个程序就叫Windows Scripting Host,程序的名字是Wscript.exe(或者命令行的Cscript.exe),你可以查看一下你的机器里有没有这两个文件,就知道有没有WSH了。(win2000是在winnt/system32/下)

这非常像批处理文件,只不过文件里不是命令行,而是脚本语言写的脚本。

再来简单介绍一下WSH自带的几个内置对象包括:

1.由 Wscript.exe 提供的对象

Wscript 作为 Wscript 公开给脚本引擎。

WshArguments 未公开;通过 Wscript.Arguments 属性访问。 入

2.由 WSHom.Ocx 提供的对象。

WshShell 自动对象。ProgID 是 Wscript.WshShell。
(注:这个就是我们要用到的,可以执行dos命令)
WshNetwork 自动对象。ProgID 是 Wscript.WshNetwork。
WshShortcut 未公开;通过 WshShell.CreateShortcut 方法访问。
WshUrlShortcut 未公开;通过 WshShell.CreateShortcut 方法访问。
WshCollection 未公开;通过 WshNetwork.EnumNetworkDrives 或 WshNetwork.EnumPrinterConnection 方法访问。
WshEnvironment 未公开;通过 WshShell.Environment 属性访问。
WshSpecialFolders 未公开;通过 WshShell.Folder 属性访问。

他们主要可以完成环境变量的获取,网络登陆,驱动器映射,快截方式创建,程序加载,特殊文件夹(如系统文件夹)信息获取等功能。

如果你的系统里支持ADO等COM部件,你同样可以使用,下面这个例子演示打开写字板查看文本文件,同时创建一个文本文件并写入一段话,你可以把他拷贝到写字板中,然后以.vbs为后缀存盘,之后双击他,


'test.vbs
'*********************
'下面用SHELL对象启动程序
'*********************
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.Run ("notepad " & Wscript.ScriptFullName)
'***********************************************
'用COM对象Scripting.FileSystemObject操作文本文件
'***********************************************
Set fs = Wscript.CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("这是一个测试。")
a.Close


也可以在asp等web编程语言中应用


<script language="VBScript.Encode" runat=server>
'上面用SHELL对象启动程序
Set WshShell = server.CreateObject("Wscript.Shell")
IsSuccess = WshShell.Run ("D:\winnt\system32\cmd.exe" ,1, true)
if IsSuccess = 0 Then 
Response.write " 命令成功执行!"
else 
Response.write " 命令执行失败!权限不够或者该程序无法在DOS状态下运行"
end if
</script>


注:

1.其中runat=server必须要有

2.Set WshShell = Wscript.CreateObject("Wscript.Shell")要改为Set WshShell = server.CreateObject("Wscript.Shell"),

3.参数1代表SW_SHOWNORMAL, 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。

4.TRUE代表返回执行的错误,False或者为指定代表脚本继续执行而不等待进程结束。

5.调用WSH的内置对象了,可以象调用函数和过程一样。

call WshShell.Run ("D:\winnt\system32\cmd.exe" ,1, true)


如果你对WSH感兴趣,想了解更多的话,请察看
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/wsconwshbasics.asp
http://www.dev-club.com/club/bbs/showEssence.asp?id=11136

标签:rar,压缩,服务器,zip,wsh
0
投稿

猜你喜欢

  • 用javascript实现页面无刷新更新数据

    2011-08-14 07:54:08
  • javascript面向对象编程(三)

    2008-03-07 13:19:00
  • ASP获取网址或当前地址代码

    2008-04-07 20:19:00
  • 大内存SQL Server数据库的加速剂

    2009-03-06 14:18:00
  • MySQL的远程连接出现错误提示分析

    2011-07-01 11:34:00
  • Windows mysql命令行导入 .sql文件

    2010-12-03 16:12:00
  • oracle下加密存储过程的方法

    2009-02-28 10:50:00
  • Facebook基础的信息架构图

    2008-04-01 09:46:00
  • JavaScript性能优化小技巧,创建文档碎片

    2010-03-31 18:27:00
  • 用ASP动态生成JS表单验证代码

    2007-09-30 20:38:00
  • 用asp程序读取网站的alexa世界排名

    2008-11-23 20:43:00
  • Access数据库操作中出现的怪现象

    2008-04-24 14:22:00
  • Sun正式发布MySQL 5.1版 简化数据库应用

    2008-12-11 15:15:00
  • 动网论坛验证码改进 加法验证码(ASPJpeg版)

    2011-04-10 10:44:00
  • MySQL优化全攻略--相关数据库命令

    2008-11-01 17:03:00
  • 如何结束一个session变量

    2009-08-12 19:20:00
  • IE6终极备忘单——对IE6单独兼容[译]

    2010-01-21 18:34:00
  • 浅谈LogMiner的使用方法

    2009-02-28 11:12:00
  • asp如何对一个文件夹进行创建和删除?

    2009-11-20 18:42:00
  • 如何提高Request集合的使用效率?

    2010-06-07 20:53:00
  • asp之家 网络编程 m.aspxhome.com