冰凌汇编

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 50|回复: 0
收起左侧

[系统软件] 分卷压缩小工具(基于Winrar)

[复制链接]
bingling 发表于 2022-6-17 12:36:35
6月以来为许多坛友提供了一些科社的图书,以下脚本是在多次上传过程中逐步完善的
可方便应助者分卷上传。
应助临近尾声,希望这个小工具能帮助更多的人

直接另存为 自动分卷压缩.au3,运行即可
[C] 纯文本查看 复制代码
#include <File.au3>

#include <Array.au3>

$iniFile=@ScriptDir & "自动分卷压缩.ini"
$vNum=IniRead($iniFile, "Config", "vNum", "95m") ; lanzou <100m
$myExt=IniRead($iniFile, "Config", "FileExt", "*.pdf") ;默认支持pdf
$rarDirect=Number(IniRead($iniFile, "Config", "RarDirect", 105))

$path=@ScriptDir
$a=_FileListToArrayRec($path & "\", $myExt, 1, 0, 0, 0)
If Not @Error Then
        For $i=1 to $a[0]
            $size=FileGetSize($a[$i])
                If $size>100*1048576 And $size<=$rarDirect*1048576 Then ;直接rar压缩。 不一定准确,可以根据情况调整
                        $controls="-s -m1 -ep"
                         CompressWithCmd($a[$i], 'rar', $path,$controls, 1)
                ElseIf $size>$rarDirect*1048576 Then ;分卷
                     $controls="-s -m0 -ep -afzip -v" & $vNum
                         CompressWithCmd($a[$i], 'zip', $path,$controls, 1)
                ENdif
    Next
EndIf

$a=_FileListToArrayRec($path & "\", "*.z*|*.zip", 1, 0, 0, 0)
If Not @error Then
     For $i=1 to $a[0]
                $controls='-s -m1 -ep -afzip'
                CompressWithCmd($a[$i], 'zip', $path, $controls, 0)
     Next
EndIf

Msgbox(8192, "Info", "Done!", 2)

Func CompressWithCmd($file, $poststr, $path, $control, $flag=1)
        $WinRarSoft=IniRead($iniFile, "Config", "WinRar", "C:\Program Files\WinRAR\winrar.exe") ; lanzou <100m
        $DeleteSource=Number(IniRead($iniFile, "Config", "DeleteSource", 0)) ;是否删除已压缩的源文件
        If $flag==1 Then
                $file2=StringReplace($file, ".pdf", "")
                $newfile=$path & "\" & $file2 & "." & $poststr
                $mycmd='"' & $WinRarSoft & '"' & ' a "' & $newfile & '" ' & $control & ' "' & $path & '\' & $a[$i] & '"'
                ConsoleWrite($mycmd &  @LF)
                RunWait($mycmd , $path, @SW_HIDE)
                If $DeleteSource=0 Then
                   FileDelete($path  & "\" & $file)              ;不需要保留选此
                Else
                        If Not FileExists(@ScriptDir & "\本地保留") Then DirCreate( @ScriptDir & "\本地保留")
                        FileMove($file, @ScriptDir & "\本地保留" , 1 ) ;需要保留的话
        EndIf

        Else ; z01压缩
                $file2=StringReplace($file, ".z", "-")
                $newfile=$path & "\" & $file2 & "." & $poststr
                $mycmd='"' & $WinRarSoft & '"' & ' a "' & $newfile & '" ' & $control & ' "' & $path & '\' & $a[$i] & '"'
                RunWait($mycmd , $path, @SW_HIDE)
                FileDelete($path  & "\" & $file)
        EndIf
EndFunc

以下压缩包内包括原始脚本与编辑后小程序:

分卷压缩小工具(基于Winrar) - bingling_冰凌汇编 自动分卷压缩脚本.zip (455.97 KB, 下载次数: 0)

运行效果如下:
分卷压缩小工具(基于Winrar) - bingling_冰凌汇编
冰凌汇编免责声明
以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|站点统计|Archiver|小黑屋|RSS|冰凌汇编 ( 滇ICP备2022002049号 滇公网安备 53032102000029号)|网站地图

GMT+8, 2022-9-25 06:44 , Processed in 0.132726 second(s), 8 queries , Redis On.

冰凌汇编 - 建立于2021年12月20日

Powered by Discuz! © 2001-2022 Comsenz Inc.

快速回复 返回顶部 返回列表