您的位置:首页资讯压缩软件 → 调用winzip命令行对上传的多个文件打包压缩

调用winzip命令行对上传的多个文件打包压缩

时间:2004/11/7 3:00:00来源:本站整理作者:蓝点我要评论(0)

如何在服务器端调用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编程语言中应用



'上面用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



注:

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|path]    是在另外的驱动器上创建临时压缩文件

-d              删除zip文件中指定的目标文件

-e   是设置压缩比率,x最大,0最小

-f              替换zip文件中存在的文件

-h|-?            察看帮助

-v              创建一个压缩文件的列表信息

-@list             先创建一个包含所有要解压的文件的文件,然后按所包含的的文件名压缩

...............(其他具体看帮助文件)

[@listfile]     是压缩文件的列表信息纪录

[files...]      则是要压缩的多个文件,用空格隔开,也可以用通配符



例:

压缩当前目录的所有文件   

wzzip test.zip *.*

压缩类型为txt的所有文件  

wzzip test.zip *.txt

压缩两个文件            

wzzip test.zip abc.txt def.txt

压缩类型为txt的所有文件除了abc.txt

wzzip -xABC.TXT test.zip *.txt

压缩D:\docs下的所有类型为txt的文件及子目录  

wzzip -rp test.zip d:\docs\*.txt

把zipit.1st里的文件更新到test.zip  

wzzip -u test.zip @Zipit.lst

列出一个压缩文件的列表内容

wzzip -v test.zip







解压文件用WZUNZIP.exe :

通过格式:wzunzip [options] zipfile [@listfile] [path] [files...]

[options]包括:

-c[m]            解压是显示文件列表在dos屏幕中

-d              重建zip文件中的目录结构

-f              只解压在zip文件里同目前文件夹存在的同名的文件,如果没有则不解压

-jhrs            忽视zip文件里的文件的隐藏、只读、系统属性

-Jhrs            只解压带有隐藏、只读、系统属性的文件

-n              只解压叫新的文件,如果要解压的文件比已存在的新则替换。

-o              不用通过yes来确定是否要替换文件

-v              创建一个压缩文件的列表信息

-@list            先创建一个包含所有要解压的文件的文件,然后按所包含的的文件名解压

...............(其他具体看帮助文件)

例如:

创建所有文件到当前目录下

wzunzip test.zip

从test.zip中创建abc.txt到当前目录下

wzunzip test.zip abc.txt

创建在test.zip中的目录结构及文件到当前目录下

wzunzip -d test.zip

创建在test.zip中的目录结构及文件到c:\docs下

wzunzip -d test.zip c:\docs从test.zip中创建包含在files.ist中的文件名的文件

wzunzip test.zip @files.lst

显示test.zip的文件列表内容

wzunzip -v test.zip

显示压缩文件中所有类型为txt的文件列表内容

wzunzip -v test.zip *.txt





有了以上的准备,那么我们现在来编写VBS来执行文件解压和压缩就易如反掌了:

'test.vbs

'*********************

'上面用SHELL对象启动程序

'*********************

Set WshShell = Wscript.CreateObject("Wscript.Shell")

WshShell.Run ("c:\wzzip.exe c:\test.zip c:\a.txt c:\b.txt")





'test.asp

'*********************

'上面用SHELL对象启动程序

'*********************



'上面用SHELL对象启动程序

Set WshShell = server.CreateObject("Wscript.Shell")

IsSuccess = WshShell.Run (" c:\wzzip.exe c:\test.zip c:\a.txt c:\b.txt" ,1, true)

if IsSuccess = 0 Then

    Response.write " 命令成功执行!"

else  

   Response.write  " 命令执行失败!权限不够或者该程序无法在DOS状态下运行"

end if







怎么样很简单吧,如果我们再把文件上传和此结合起来,就会产生很多使用的功能。如:

在用上传组件上传多个文件后,可以对其多个文件打包,以提供给其他人zip文件下载

或者上传一个zip文件后,可以利用程序对其解压,以提供给其他人单个文件下载

很方便用户吧!我会在以后的文章里把这两种变化写出来!文中难免有疏漏的地方,请大家多多指正!

有问题可以联系comezxn@163.com 或 在http://club.topdigi.com.cn讨论!





以上的例子均在win2000+iis5.0上测试过!




相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 2345好压怎么解压 好压360压缩怎么减少关联的巧用快压合并MP3文件压缩文件损坏怎么办?W

最新文章 快压怎么使用托盘挂载快压怎么使用压缩包直 快压怎么使用右键制作超高压缩比格式快压怎么制作固实压缩包 快压制作固实压缩快压怎么制作自解压安装包快压怎么加密 快压怎么设置密码

人气排行 gzip是什么文件?gzip文件怎么打开?2345好压怎么解压 好压怎么解压文件2345好压怎么压缩文件2345好压忘记密码怎么办 2345好压密码找回方2345好压怎么删除 2345好压卸载不了解决方法压缩文件格式有哪些压缩文件损坏怎么办?WinRAR内置压缩文件修复快压如何压缩文件 快压压缩文件方法