Heim >Backend-Entwicklung >PHP-Tutorial > 用Wscript.Shell压缩有问,多谢

用Wscript.Shell压缩有问,多谢

WBOY
WBOYOriginal
2016-06-13 13:01:35842Durchsuche

用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); 

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn