函数要调用cmd和winrar.exe,只能以管理组启动这些程序,合适的权限分配下才能正常使用这个函数。需要使得匿名账户有执行权限,和ntfs文件系统的读写权限。没有自己服务器的还是算了。有些虚拟主机程式是支持解压缩和压缩的,实现的道理类似,无外乎就是winrar的使用。

要想实现这种功能,首先要得到Rar程序的解压缩核心文件支持(可以下载WinRar软件,再把其中的Rar.exe文件单独“拿”出来。),并且还需要Windows操作系统自带的cmd.exe程序(这个程序用来执行Rar.exe文件。操作系统自带的,NT内核的操作系统可以在操作系统安装目录下的System32文件夹下找到它;Windows 9X的操作系统可以在操作系统安装目录下的System文件夹下找到它。),然后把它们上传到同一目录中。

<%
‘描述:只有压缩功能,没有解压功能;需要cmd.exe和Rar.exe两个执行程序
‘参数说明:Rar(ByVal CmdDir,ByVal RarNameDir,RarSourceDir)
‘CmdDir为cmd.exe和Rar.exe两个执行程序的[共同]存放绝对路径;
‘RarNameDir为压缩后保存文件名称,要绝对路径;
‘比如:E:\WebSite\Rar\AA\MMGG 那么表示压缩为MMGG.rar,保存在E:\WebSite\Rar\AA\路径下
‘RarSourceDir要压缩的[文件]或[文件夹],要绝对路径;
‘比如:E:\WebSite\Rar\AA表示压缩名为”AA”的整个文件夹;E:\WebSite\Rar\AA\表示压缩文件夹”AA”里的[所有文件](不包括里面的文件夹)
‘******************************************************
Sub Rar(ByVal CmdDir,ByVal RarNameDir,RarSourceDir)
Dim Cmd,Shell
Cmd=CmdDir&”cmd.exe /c “&CmdDir&”Rar.exe a -ep1 -o+ ” ‘// -ep1 -o+分别为两个开关命令具体可参考WinRar的帮助
Cmd=Cmd&RarNameDir&” “&RarSourceDir
On Error Resume Next
Set Shell = Server.CreateObject(“WScript.Shell”)
If Err or IsObject(Shell)=False Then
If Err Then Err.Clear
Response.Write “没有操作Shell权限…”
Response.End
End If
On Error Resume Next
Shell.Run Cmd,1,True
If Err Then
Err.Clear
Response.Write “压缩文件时出错,可能没有操作权限”
Response.End
End If
End Sub
%>

示例:
<%
Dim CmdDir,RarNameDir,RarSource
CmdDir=Server.MapPath(“RAR”)&”\” ‘//cmd.exe和rar.exe存放的路径
RarNameDir=Server.MapPath(“AA”)&”\MMGG” ‘//压缩为”MMGG.rar”
RarSourceDir=Server.MapPath(“AA”)&”” ‘//将整个”AA”文件夹压缩
Call Rar(CmdDir,RarNameDir,RarSourceDir)
%>

分类: ASP

寒林

www.3code.cn 专注WordPress企业主题