Cando_智能解压7z

; 使用须知:请在你个generalsettings.ini里面设置好
; 7z
; 7zg
; 的路径
; 这是配合candy的用法,独立用的话,请自行修改
Cando_智能解压:          ;IntUnZip ======= intelligent UnZip
	IntUnZip_Many_In_FirstLevel:=0
	IntUnZip_Folder_In_FirstLevel:=0
	aaaa:=
	bbbb:=
	Count:=1

	IntUnZip_FileLists=%a_temp%wannianshuyao_IntUnZip_%a_now%.txt
	Splitpath ,CandySelected,,IntUnZip_FileDir,,IntUnZip_FileNameNoExt,IntUnZip_FileDrive
	DriveSpaceFree , IntUnZip_FreeSpace, %IntUnZip_FileDrive%
	FileGetSize, IntUnZip_FileSize, %CandySelected%, M
	If ( IntUnZip_FileSize > IntUnZip_FreeSpace )
	{
		MsgBox 磁盘空间不足,请检查后再解压。`n------------`n压缩包大小为%IntUnZip_FileSize%M`n剩余空间为%IntUnZip_FreeSpace%M
		Return
	}
	Runwait, %Comspec% /C %7Z% L "%CandySelected%" `>"%IntUnZip_FileLists%",,hide

	;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
	Loop,read,%IntUnZip_FileLists%
	{
		If(regexmatch(a_loopreadline,"^d{4}-d{2}-d{2}"))
		{
			If( Instr(a_loopreadline,"d")=21 Or Instr(a_loopreadline,""))  ;本行如果包含或者有d标志,则判定为文件夹
			{
				IntUnZip_Folder_In_FirstLevel=1
			}
			aaaa:=RegExReplace(A_LoopReadLine,"^d{4}-d{2}-d{2}.{43}(.*?)(\.*|$)","$1")
			If(bbbb != aaaa  And  bbbb!="" )
			{
; 				MsgBox %aaaa%`n%bbbb%
				IntUnZip_Many_In_FirstLevel=1
				Break
			}
			bbbb:=aaaa
		}
	}
	Filedelete,%IntUnZip_FileLists%
	;━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
; 	MsgBox IntUnZip_Many_In_FirstLevel=%IntUnZip_Many_In_FirstLevel%  IntUnZip_Folder_In_FirstLevel=%IntUnZip_Folder_In_FirstLevel%
	If(IntUnZip_Many_In_FirstLevel=0 && IntUnZip_Folder_In_FirstLevel=0 )   ;压缩文件内,首层有且仅有一个文件
	{
		Run, %7Zg% X "%CandySelected%" -O"%IntUnZip_FileDir%"    ;覆盖还是改名,交给7z
	}
	Else If(IntUnZip_Many_In_FirstLevel=0 && IntUnZip_Folder_In_FirstLevel=1 )   ;压缩文件内,首层有且仅有一个文件夹
	{
		IntUnzip_FilePath:=IntUnZip_FileDir "" aaaa
		If not	FileExist(IntUNzip_FilePath)  ;不存在同名文件夹?则直接解压
		{
			Run, %7Zg% X "%CandySelected%" -O"%IntUnZip_FileDir%"
		}
		Else  ;存在同名文件夹?则加一个后缀。遗憾的是,这样的话,一定会生成”多余“文件夹。
		{
			IntUnzip_FilePath_test:=IntUnzip_FilePath
			While,fileexist(IntUnzip_FilePath)
			{
				IntUnzip_FilePath:=IntUnzip_FilePath_test "(" Count ")"
				Count+=1
			}
			Run %7Zg% X  "%CandySelected%" -O"%IntUnzip_FilePath%"
		}
	}
	Else  ;压缩文件内,首层有多个文件(夹),此时不论怎么的,都得生成 “压缩文件名”为名的文件夹。
	{
		IntUnzip_FilePath :=IntUnZip_FileDir "" IntUnZip_FileNameNoExt
		IntUnzip_FilePath_test:=IntUnzip_FilePath
		While,fileexist(IntUnzip_FilePath)
		{
			IntUnzip_FilePath:=IntUnzip_FilePath_test "(" Count ")"
			Count+=1
		}
		Run %7Zg% X  "%CandySelected%" -O"%IntUnzip_FilePath%"
	}
	Return

给TA捐赠
共{{data.count}}人
人已捐赠
其他

cando_智能解压

2020-3-21 12:13:58

其他

Cando_有道翻译

2020-3-21 12:27:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索