>백엔드 개발 >PHP 튜토리얼 > 用Wscript.Shell压缩有问,多谢

用Wscript.Shell压缩有问,多谢

WBOY
WBOY원래의
2016-06-13 13:01:35843검색

用Wscript.Shell压缩有问,谢谢

<br />
<?PHP<br />
class rar<br />
{<br />
<br />
public $Path; //文件路径<br />
<br />
public $Save; //保存路径<br />
<br />
public $Object; //Wscript.Shell对象实例<br />
<br />
function rar(){ //构造函数<br />
<br />
$this->Object = new com("Wscript.Shell"); //实例化一个Shell对象<br />
<br />
}<br />
<br />
function Release(){ //解压方法<br />
<br />
$this->Object->run("WinRAR x $this->Path $this->Save",1,false); //Path要解压的文件名及路径 Save保存路径<br />
<br />
   if($this->Object == true){<br />
<br />
   return true;<br />
<br />
   }else{<br />
<br />
   return false;<br />
<br />
   }<br />
<br />
}<br />
<br />
function Pressure(){ //压缩方法<br />
<br />
$this->Object->run("WinRAR a $this->Save $this->Path",1,true); //Save压缩后保存的路径及文件名 Path要压缩的路径<br />
<br />
   if($this->Object == true){<br />
<br />
   return true;<br />
<br />
   }else{<br />
<br />
   return false;<br />
<br />
   }<br />
<br />
}<br />
}<br />
<br />
<br />
$rar=new rar();<br />
$rar->Path="F:/js/test/z.rar";<br />
$rar->Save="F:/js/test";<br />
if($rar->Release()){<br />
die('解压成功');<br />
}else{<br />
die('解压失败');<br />
}<br />
?><br />
 <br />
<br />
<br />

用这个代码,能正常压缩
但是它只能压缩绝对路径,而且压缩的时候,它把所有的目录都添加成了空文件夹
比如,我压缩:c:\a\b\c\k.txt
那么压缩后的压缩文件就有很多层文件夹在里面
-a
 -b
  -c
   -k.txt
怎么办啊?
用相对目录就不能压缩
------解决方案--------------------
你可以给 winrar 加上下面参数,但须清楚这样做的后果

 ep            从名称中排除路径

   包含此开关时,文件在加入压缩文件时不会包含路径信息。这可能会有在压缩文件中,存在数个相同名称的结果。

 ed            不添加空目录

 这个开关指出空目录不被存储到被创建的压缩文件中。当解压这样一个压缩文件时, RAR 会基于他们内部的文件路径创建非空的目录。关于空目录的信息丢失。非空目录除了名字外(访问权限, 流, 等。)其他所有属性全部丢失, 所以只有在你不需要保留这样的信息时使用此开关。


------解决方案--------------------
$this->Object->run("WinRAR a 参数在这里 $this->Save $this->Path",1,true); 

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.