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
THE END
暂无评论内容