最新消息:

Zip压缩与解压

autoit 永恒心锁 1658浏览 0评论

Zip压缩与解压改写了之前的VBS脚本而已
只是创建Shell对象进行解压缩,没什么特别的
压缩:

#include <file.au3>
#include <array.au3>
#include <string.au3>

Dim $SourceDir, $ZipFile
$SourceDir= @ScriptDir & "\1111.txt"
$ZipFile= @ScriptDir & "\test.zip"
Zip($SourceDir, $ZipFile)

Func Zip($mySourceDir, $myZipFile)
 Dim $PathArr, $Ftype, $szDrive, $szDir, $szFName, $szExt,$f, $objShell, $objSource, $objFolderItem, $objTarget, $intoptions
 $PathArr = _PathSplit($mySourceDir, $szDrive, $szDir, $szFName, $szExt)
;~ _ArrayDisPlay($PathArr,"路径拆分演示")
 If StringLen($szExt)=0 Then
 $Ftype = "Folder"
 ElseIf StringLen($szExt)>0 Then
 $Ftype = "File"
 Else
 MsgBox(4096,"错误","压缩源文件/文件夹路径出错!")
 Exit
 EndIf
 $f = _FileCreate($myZipFile)
 FileWrite($f,"PK"&chr(5)&chr(6)&_StringRepeat(chr(0),18))
 FileClose($f)
 $objShell = objcreate("shell.Application")
 Select
 Case $Ftype="Folder"
 $objSource = $objShell.NameSpace($mySourceDir)
 $objFolderItem = $objSource.Items()
 Case $Ftype="File"
 $objSource = $objShell.NameSpace($szDrive & $szDir)
 $objFolderItem = $objSource.ParseName($szFName & $szExt)
 EndSelect
 $objTarget = $objShell.NameSpace($myZipFile)
 $intoptions = 256
 $objTarget.CopyHere($objFolderItem, $intoptions)
 Do
 sleep(1000)
 Until $objTarget.Items.Count>0
EndFunc

解压:

#include <file.au3>
#include <array.au3>
;~ #include <string.au3>

Dim $ZipFile, $TargetDir
$ZipFile = "D:\autoit_test\UnZip.zip"
$TargetDir = "D:\autoit_test" 

UnZip($ZipFile,$TargetDir)

Func UnZip($myZipFile,$myTargetDir)
 Dim $objShell, $PathArr, $szDrive, $szDir, $szFName, $szExt, $objSource, $objFolderItem, $objTarget, $intOptions
 $objShell = ObjCreate("Shell.Application")
 $PathArr = _PathSplit($myZipFile, $szDrive, $szDir, $szFName, $szExt)
 _ArrayDisPlay($PathArr,"路径拆分演示")
 If Not(FileExists($myZipFile)) Then
 MsgBox(4096,"错误","解压缩源文件路径不存在!")
 Exit
 ElseIf Not($szExt=".zip") Then
 MsgBox(4096,"错误","解压缩源文件路径出错!")
 Exit
 ElseIf Not(FileExists($myTargetDir)) Then
 DirCreate($myTargetDir)
 EndIf
 $objSource = $objShell.NameSpace($myZipFile)
 $objFolderItem = $objSource.Items()
 $objTarget = $objShell.NameSpace($myTargetDir)
 $intOptions = 256
 $objTarget.CopyHere($objFolderItem,$intOptions)
EndFunc
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。丨本站为个人博客非盈利性站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途。丨本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权BY-NC-SA协议进行授权

转载请注明:永恒心锁-分享互联网 » Zip压缩与解压

您必须 登录 才能发表评论!