Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

ASP WScript.Shell执行WinRar在线压缩解压缩文件

[复制链接]
530761333 发表于 2010-10-10 15:22:55 | 显示全部楼层 |阅读模式
下载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]




    1. <%   
    2. Dim strZipFolder    ' 待压缩的文件夹   
    3. Dim strUnZipFolder    ' 解压文件夹   
    4. Dim strRarFile        ' 生成的压缩文件名   
    5. Dim strCmd            ' 命令行   
    6.   
    7. strZipFolder = Server.MapPath("./") & ""  
    8. strUnZipFolder = Server.MapPath("./UnZip") & ""  
    9. strRarFile = strZipFolder & "Test.Rar"  
    10.   
    11. ' 构造命令行   
    12. '-----------------------------------------------   
    13. '使用参数说明   
    14. '命令 A - 添加文件到压缩文件   
    15. '命令 X - 以完整路径名称从压缩文件解压压缩   
    16. '开关 -IBCK  -  在后台运行 WinRAR   
    17. '开关 -R  -  连同子文件夹   
    18. '开关 -EP1  -  从名称中排除主文件夹   
    19. '开关 -Y  -  假设全部的询问回应皆为“是”   
    20. '------------------------------------------------   
    21. If Request.QueryString("act") = "zip" Then  
    22.     ' Fso测试用,生成压缩文件前删除同名文件.   
    23.     ' 这里也许可以有开关设置可以直接覆盖原文件的,没找着,反正这里主要是看如何调用外部程序的.   
    24.     Dim objFso   
    25.     Set objFso = Server.CreateObject("Scripting.FileSystemObject")   
    26.     If objFso.FileExists(strRarFile) Then objFso.DeleteFile(strRarFile)   
    27.     Set objFso = Nothing  
    28.     strCmd = "winrar a -ibck -r -ep1 -y " & strRarFile & " " & strZipFolder   
    29. Else  
    30.     strCmd = "winrar x -ibck -r -y " & strRarFile & " " & strUnZipFolder   
    31. End If  
    32.   
    33. '执行命令行   
    34. Dim objShell   
    35. Dim intSecceed   
    36. Set objShell = Server.CreateObject("WScript.Shell")   
    37. Response.Write(strCmd & "<hr>")   
    38. intSecceed = objShell.Run(strCmd,0,True)   
    39. If intSecceed = 0 Then  
    40.     Response.Write("命令成功执行,返回码:" & intSecceed)   
    41. Else  
    42.     Response.Write("命令执行失败,返回码:" & intSecceed)   
    43. End If  
    44. %>  <%
    复制代码

    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方法执行外部程序

maikongjian14a 发表于 2010-10-10 15:42:12 | 显示全部楼层
认真学习了也
回复

使用道具 举报

ie008 发表于 2010-10-10 16:46:29 | 显示全部楼层
不错哦``学习了
回复

使用道具 举报

丿逍遥王子 发表于 2010-10-11 17:26:57 | 显示全部楼层
我有PHP版本的,而且我也一直在用,非常方便

回复

使用道具 举报

la367 发表于 2010-10-12 13:48:59 | 显示全部楼层
进来了解一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 10:15 , Processed in 0.030162 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表