如何在服务器端调用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 现在我们言归正传来看看如何对文件进行压缩和解压! 大家都知道winzip对文件解压和压缩都易如反掌,但是如何通过程序和命令行对其调用呢? 当然winzip的作者已经开发出 WinZip Command Line Support Add-On Version 1.0 大家去可以去http://www.winzip.com/wzcline.htm 下载wzcline.exe! 前提是本机须安装winzip8.0或更高版本的支持,如果你不是winzip8.0,去 http://www.winzip.com/download.htm 下载! 下载后,直接安装就可以! 就会在winzip的目录中产生winzip命令行帮助文件和程序WZZIP.exe,WZUNZIP.EXE。 你可以开始运行里调用: 如:"c:\program files\winzip\wzzip" myfile.zip 也可以拷贝这里两个文件到任意目录下,直接在dos窗口下运行 如:wzzip.exe myfile.zip 你可以在系统的环境变量里加入set path=c:\windows;c:\program files\winzip; 就可以在任何地方不用加入路经调用了! 现在来简单的了解一下帮助中两个命令的基本用法 压缩文件用 WZZIP.exe : 通用格式:wzzip [options] zipfile [@listfile] [files...] [options]包括: -a 默认的操作,压缩文件 -a+ 压缩文件,并删除要压缩的文件 -b[drive |