智能压缩

/*
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
QZA:感谢群友卢霖的多文件传参正则以及系统位数判断的dllcall
1、如果选中一个文件,则以文件名作为生成压缩包的文件名
2、如果选中多个文件,则以上层目录的目录名作为生成压缩包的文件名
3、如果选中的有且仅有一个文件夹,则以文件夹名,作为生成压缩包的文件名
4、如果遇到同名的压缩包则以文件名+(数字)这种来命名
5、智能的解释就是压缩包里不会出现文件夹嵌套的问题,类似于智能解压可以自动的去掉文件夹嵌套,具体不会表述,自行测试即可
6、总之一切功能都有智能解压的影子
7、有问题可以交流 run:1324424600
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
cando_智能压缩:
global   7zip
global   dir
ThisProcess := DllCall("GetCurrentProcess")     ;判断系统是多少位 感谢卢霖
	if !DllCall("IsWow64Process", "uint", ThisProcess, "int*", IsWow64Process)
		IsWow64Process := false
	if  %IsWow64Process%=0 ;如果系统是32位
		7zip:= "Apps7-Zip327zG.exe" 
	else
	  7zip:= "Apps7-Zip647zG.exe" 
		
	if !InStr(candysel,"`n")  ;若不是多文件则执行下列命令,以所选文件为压缩文件名
	{
		if InStr(FileExist(candysel), "D") ;若为文件夹则执行下来命令
		{
			SplitPath, candysel, name, dir, ext, name_no_ext, Drive
			Loop, %candysel%* ,1   ;1表示获取文件夹文件夹.
			{
				if A_Index=1
				{
					File=% A_LoopFileFullPath
					continue
				}
				File.= "`r" . "`n" . A_LoopFileFullPath
			}
				FileList := RegExReplace(File, "rn", """ """)   ;感谢卢霖
			name_cheack(name,FileList)
;			Run %7zip%  a  "%dir%""%name%.7z" "%FileList%"
			return
		}
		else
		{
			SplitPath, candysel, name2, dir, ext, name_no_ext, Drive
;			Run %7zip%  a  "%dir%%name_no_ext%" "%candysel%"
			name_cheack(name_no_ext,candysel)
			return
		}
	}
	RegExMatch(candysel,"((?!\)[^\]+(?=\[^\]+n?$))",m)  ;获取上一级目录的文件名
	Loop,Parse,candysel,`n,`r  ;若为多文件,则执行下列命令,以上一级文件名为压缩文件名
	{
		SplitPath, A_LoopField, name2, dir, ext, name_no_ext, Drive
		if A_Index=1
		{
			File=% A_LoopField
			continue
		}
		File.= "`r" . "`n" . A_LoopField
		;~ FileList.=A_LoopField . """ """
	}
	;~ MsgBox %FileList%
	FileList := RegExReplace(File, "rn", """ """)
	Clipboard=%FileList%
;	Run %7zip%  a   "%dir%%m1%" "%FileList%"
	name_cheack(m1,FileList)
return

name_cheack(name,files){
;name_cheack:
	IfExist,%dir%%name%.7z   ;已经存在了以“首层文件夹命名”的文件夹,怎么办?
	{
;	MsgBox %7zip%
		Loop
		{
			FolderName=%dir%%name%( %A_Index% ).7z
			If !FileExist( FolderName )
			{
				MsgBox %FolderName%
				Run %7zip%  a   "%FolderName%" "%files%"
				break
			}
		}
		return
	}
;	MsgBox %name%
	Run %7zip%  a   "%dir%%name%.7z" "%files%"
}



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

显隐QQ主界面

2020-3-9 3:22:44

其他

智能标点

2020-3-9 3:24:44

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