在服务器端调用winzip命令行对上传的多个文件打包压缩
要解决这个问题,首先要了解一下Windows Scripting Host,简称为WSH!下面引用一下微软给的解释:
************************************************************************
* WSH是微软脚本技术系列中的一种,简单讲,就是提供了一种脚本环境, *
* 在这个环境中,预定义了一些对象,同时也可以使用COM里的其他对象。 *
* 他使用一种脚本引擎来对脚本解释执行,微软自己支持VBSCRIPT和JSCRIPT, *
* 第三方也可以开发自己的脚本引擎。 *
************************************************************************
具体点,就是你先编好一些脚本文件(微软自带例子若干,后缀.vbs或 .js),
然后用一个程序对他解释执行,这个程序就叫Windows Scripting Host,程序
的名字是Wscript.exe(或者命令行的Cscript.exe),你可以查看一下你的机器
里有没有这两个文件,就知道有没有WSH了。(win2000是在winnt/system32/下)
这非常像批处理文件,只不过文件里不是命令行,而是脚本语言写的脚本。【文章来自:开店乐www.KaiDianLe.Com】
再来简单介绍一下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|path] 是在另外的驱动器上创建临时压缩文件
-d 删除zip文件中指定的目标文件
-e<x|n|f|s|0> 是设置压缩比率,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对象启动程序
'*********************
<script language="VBScript.Encode" runat=server>
'上面用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
</script>
怎么样很简单吧,如果我们再把文件上传和此结合起来,就会产生很多使用的功能。如:
在用上传组件上传多个文件后,可以对其多个文件打包,以提供给其他人zip文件下载
或者上传一个zip文件后,可以利用程序对其解压,以提供给其他人单个文件下载
很方便用户吧!我会在以后的文章里把这两种变化写出来!文中难免有疏漏的地方,请大家多多指正!
以上的例子均在win2000+iis5.0上测试过!
【日期:2006-8-7】【作者:不祥】【转载自:开店乐】
相关文章:
最好的网上开店系统:凡人网络购物系统免费下载
Rs.open sql,conn,A,B 的A、B各代表什么?
ASP开发中存储过程应用全接触
Oracle大文本在ASP中存取问题的解决
数据分页方法新思路,速度非常快!
ASP+vbscript写的万能查询表达式生成器
常用网站数据库SQL操作语句
ASP程序与SQL存储过程详解
ASP脚本一空间绑定多个域名代码
WEB编程开发常用的代码大全
解决大字段在Form中Post出错的方法
学习ASP之编写安全的ASP代码
ASP程序应用之模板采用
防止别人批量采集功能的ASP代码
网页图片下拉选择控件使用实例
平时写程序的时候出错时的解决方法
“在线访客”的制作方法
ASP中数据库调用时常见错误的现象和解决
ASP 编程中20个非常有用的例子
经典实用的基础asp程序整理
ASP中从数据库读取二进制文件数据代码
ASP动态生成的javascript表单验证代码
在电子商务中实现购物车的方法
ASP利用Google实现在线翻译功能
实现千万级数据分页的存储过程
详细说明用ASP和WML来实现数据库查询
ASP访问INTERBASE数据库
ASP安全配置不完全手册
在ASP中如何访问Novell下的数据库
ASP进阶学习必经之认识数学函数11种
初学者必读 ASP运行环境的搭建
解析asp的脚本语言
学习使用ASP对象和组件
让ASP程序运行于非Windows平台
通过启动脚本来感受ASP的力量
一些不长见的ASP调用存储过程的技巧
使用ASP脚本技术
优化Web数据库页面
Asp限制IP访问代码
ACCESS数据库防下载另类方法
ASP浏览器性能组件
细说ASP中Counters 组件
全面解析Server对象
ASP 内建对象Request和Respones
深入研究Application和Session对象
使用ASP、VB和XML建立运行于互联网上的应用程序
在客户端执行数据库记录的分页显示
对ASP脚本源代码进行加密
用代码打开Access文件的两种方法
使用Visual InterDev进行小组开发
用JScript脚本实现分页的另类办法
ASP中Cookie读写的实现方法
如何使用ASP建立虚拟的FTP服务器
在ASP中自动创建多级文件夹的函数
一个硬盘文件搜索的Asp源码
ASP使用MYSQL数据库全攻略
ASP上传数据流格式分析详解
ASP汉字转换UTF-8及UTF-8转换GB2312
ASP常用数据库连接及操作的方法
ASP编程中常用SQL命令使用方法
ASP查询记录时RecordCount=-1问题
让你的WAP网站有更好的兼容性
如何注册服务器端组件
轻松实现任何程序和动易整合
在服务器端调用winzip命令行对上传的多个文件打包压缩
用ASP制作强大的搜索引擎
ASP彩色校验码的制作
ASP 系列函数大全
ASP程序处理进程进度条
Asp无组件生成缩略图
用ASP实现自动建站.实现虚拟二级目录
删除Access数词库中的空记录
ASP身份证验证代码函数
ASP写的自动生成SELECT表单的函数
几种打开记录集方式的比较
用ASP实现汉字转拼音的功能
ASP分页代码,已经写成类了,值得参考
ASP下载系统防盗链方法
Global.asa文件用法大全
如何防止页面中的敏感信息被提取
Delphi编写组件封装asp代码的基本步骤
制做行背景颜色交替变换的表格
如何用foreach遍历页面上所有的TextBox
将数据库中的信息存储至XML文件中
用Asp写个加密和解密的类
如何固定表格的标题行和标题列
ASP小偷(远程数据获取)程序入门教程
Asp编写不再让人讨厌的自动弹出窗口
用ASP实现在线压缩与解压缩
使用组件封装ASP的数据库操作
ASP中读写注册表
ASP判断函数一览及网页制作常用技术
ASP中Cookie使用指南
随机产生用户密码(good)
ASP:如何对身份证的籍贯进行验证
ASP产生随机密码的函数
ASP+ADO实现数据读写简单示例
一个简单的用户登录接口ASP实现
ASP+SQL Server构建网页防火墙
一个通用的保护ASP系统的方法
利用ASP发送和接收XML数据的处理方法
版权所有:Kaidianle.Com 联系方式:Shnxn@Yhaoo.Com.Cn 京ICP备06028743号 在线留言