下载WScript.Shell执行WinRar进行压缩解压文件示例源代码:
本地下载
纳米盘下载
注意:在服务器上开通WScript.Shell对象将带来安全隐患,请谨慎使用.
本文应用到的技术:
WScript.Shell对象 .Run方法执行外部程序
准备工作
服务器上安装WinRar压缩软件
注意事项
WScript.Shell对象执行命令需要开通特殊权限,否则无法运行
本文是利用WinRar命令行方式直接调用WinRar软件执行压缩解压缩,还有一种方法是利用Cmd.exe调用WinRar的控制台版本Rar.exe来执行压缩解压缩,关于WinRar\Rar.exe的详细参数说明请参看安装目录下的winrar.hlp\Rar.txt文件.
部分主要实现源代码,完整版请下载
[url=http://www.tjxf.cn/article/11.htm#][/url]
- <%
- Dim strZipFolder ' 待压缩的文件夹
- Dim strUnZipFolder ' 解压文件夹
- Dim strRarFile ' 生成的压缩文件名
- Dim strCmd ' 命令行
-
- strZipFolder = Server.MapPath("./") & ""
- strUnZipFolder = Server.MapPath("./UnZip") & ""
- strRarFile = strZipFolder & "Test.Rar"
-
- ' 构造命令行
- '-----------------------------------------------
- '使用参数说明
- '命令 A - 添加文件到压缩文件
- '命令 X - 以完整路径名称从压缩文件解压压缩
- '开关 -IBCK - 在后台运行 WinRAR
- '开关 -R - 连同子文件夹
- '开关 -EP1 - 从名称中排除主文件夹
- '开关 -Y - 假设全部的询问回应皆为“是”
- '------------------------------------------------
- If Request.QueryString("act") = "zip" Then
- ' Fso测试用,生成压缩文件前删除同名文件.
- ' 这里也许可以有开关设置可以直接覆盖原文件的,没找着,反正这里主要是看如何调用外部程序的.
- Dim objFso
- Set objFso = Server.CreateObject("Scripting.FileSystemObject")
- If objFso.FileExists(strRarFile) Then objFso.DeleteFile(strRarFile)
- Set objFso = Nothing
- strCmd = "winrar a -ibck -r -ep1 -y " & strRarFile & " " & strZipFolder
- Else
- strCmd = "winrar x -ibck -r -y " & strRarFile & " " & strUnZipFolder
- End If
-
- '执行命令行
- Dim objShell
- Dim intSecceed
- Set objShell = Server.CreateObject("WScript.Shell")
- Response.Write(strCmd & "<hr>")
- intSecceed = objShell.Run(strCmd,0,True)
- If intSecceed = 0 Then
- Response.Write("命令成功执行,返回码:" & intSecceed)
- Else
- Response.Write("命令执行失败,返回码:" & intSecceed)
- End If
- %> <%
复制代码
Dim strZipFolder ' 待压缩的文件夹Dim strUnZipFolder ' 解压文件夹Dim strRarFile ' 生成的压缩文件名Dim strCmd ' 命令行strZipFolder = Server.MapPath("./") & "\"strUnZipFolder = Server.MapPath("./UnZip") & "\"strRarFile = strZipFolder & "Test.Rar"' 构造命令行'-----------------------------------------------'使用参数说明'命令 A - 添加文件到压缩文件'命令 X - 以完整路径名称从压缩文件解压压缩'开关 -IBCK - 在后台运行 WinRAR'开关 -R - 连同子文件夹'开关 -EP1 - 从名称中排除主文件夹'开关 -Y - 假设全部的询问回应皆为“是”'------------------------------------------------If Request.QueryString("act") = "zip" Then ' Fso测试用,生成压缩文件前删除同名文件. ' 这里也许可以有开关设置可以直接覆盖原文件的,没找着,反正这里主要是看如何调用外部程序的. Dim objFso Set objFso = Server.CreateObject("Scripting.FileSystemObject") If objFso.FileExists(strRarFile) Then objFso.DeleteFile(strRarFile) Set objFso = Nothing strCmd = "winrar a -ibck -r -ep1 -y " & strRarFile & " " & strZipFolderElse strCmd = "winrar x -ibck -r -y " & strRarFile & " " & strUnZipFolderEnd If'执行命令行Dim objShellDim intSecceedSet objShell = Server.CreateObject("WScript.Shell")Response.Write(strCmd & "<hr>")intSecceed = objShell.Run(strCmd,0,True)If intSecceed = 0 Then Response.Write("命令成功执行,返回码:" & intSecceed)Else Response.Write("命令执行失败,返回码:" & intSecceed)End If%>
知识点
WScript.Shell对象的Run方法执行外部程序
|