当前位置: 首页> > 资讯 > 软件教程 > 服务器端调用winzip命令行对上传的多个文件打包压缩

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

2024-01-17 01:29:06 53624次 佚名

类型:生活服务
时间: 2024-11-01
标签:娱乐,搜索,体育,电竞,搜索引擎,浏览器,应用商店,手机助手,短信,隐私

            
             
              
               
               
             
            
            



            要解决这个问题,首先要了解一下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编程语言中应用

注:
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对象启动程序



如果我们再把文件上传和此结合起来,就会产生很多使用的功能。如:
在用上传组件上传多个文件后,可以对其多个文件打包,以提供给其他人zip文件下载
或者上传一个zip文件后,可以利用程序对其解压,以提供给其他人单个文件下载
本文是作者经总结而作。文中难免有疏漏的地方,请大家多多指正!

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

关文章

  • 操作系统常见问题:利用extract解压缩CAB文件
    操作系统常见问题:利用extract解压缩CAB文件

                                                                                                                                  你在 Windows 95 或98的光盘里都会看到 Windows 的源文件都是以.cab 的方式储存着,.cab 文件是 Windows

  • 为Win 2003加装视频压缩
    为Win 2003加装视频压缩

                                                                                                                                  最近刚装了Windows server 2003,觉得挺好用的,但是新的问题就来了,玩CS时开头动画没有图像,只有声音。提示“视频无法使用

  • XP实用技巧:关闭压缩旧文件功能
    XP实用技巧:关闭压缩旧文件功能

                                                                                                                                  如果我们使用NTFS文件系统的话,我们可以通过“磁盘整理”中的“压缩旧文件”功能来节省被那些大量长时间没有使用的文件所占用的硬盘空间(如图

  • 机车 眩高清汽车局部
    机车 眩高清汽车局部

    [1][2][3]

  • 路由器的安全配置
    路由器的安全配置

                                                                                                                                  随着Internet的快速发展和政府、企业上网工程的日益推广,越来越多的政府机关和企业在网络上建立网站来进行对外宣传,这样,网络上的安全问

  • 专题:光盘刻录全接触
    专题:光盘刻录全接触

                                                                                                                                   刻录机,这个几年前的奢侈品,现在已经成了标准配制。硬盘中东西太多,借到一张好盘想留一张,有了刻录机就都迎刃而解了。刻录软件使用简单,一目

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

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

  • 在C#中利用SharpZipLib进行文件的压缩和解压缩
    在C#中利用SharpZipLib进行文件的压缩和解压缩

    我在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手。只好耐下心来,慢慢的研究,总算找到了门路。针对自己的需要改写了文件压缩和解压缩的两个类,分别为ZipClass和UnZipClass。其中碰到了不少困难,就决定写出来压缩和解压的程序后,一定把源码贴出来共享,让首

  • 巧改ISO文件 刻录光盘中的隐藏文件自己造
    巧改ISO文件 刻录光盘中的隐藏文件自己造

      在许多正版光盘中,都存在不少隐藏的目录或文件。如果能在刻录光盘时打造自己的隐藏文件,岂不妙哉。那还等什么,赶快跟我来吧!   一、原理篇   ISO 9660 记录规定光盘镜像文件的每一个目录和文件都有一定的格式、规定和记录,其中第26个字节记录的就是文件夹标记项。那么光盘隐藏的原理就是修改ISO文件的第26个字节的位置,让光盘产生文件确实存在,但又看不到文件和目录的特殊效果。   二、操作篇

  • 长虹进军刻录DVD市场 刻录DVD价格有望跳水
    长虹进军刻录DVD市场 刻录DVD价格有望跳水

    南方日报   本报讯 (记者 郎朗) 近日,继万利达发起刻录DVD普及风暴后,长虹也宣布将正式进入刻录DVD市场。与此同时,飞利浦也宣布,今年飞利浦DVD刻录机将会在定价策略上有所改变。一时间,国内刻录DVD市场“山雨欲来”。   据长虹新闻发言人刘海中介绍,长虹刻录DVD已完成在北京、广州、成都等城市的家电大卖场的布局。同时,2000年就将刻录DVD引入中国的飞利浦也在加紧收复失地。新上任的飞利

近期热点

热门专区推荐