none.gif

kksl

GF  2023-01-23 13:38
(kksl)

批量改后缀解压脚本demo

被拉去给老板打了两周螺丝,昨天上午在论坛里找了点好康德,然后写了一下(写这玩意儿不比给傻卵老板打白工有意思?)。加人们推荐的都看了一下,也都挺好的。大家操作不来的可以试试上个帖子里各位佬们提到的成熟的软件。    https://white-plus.net/read.php?tid-1696530.html本质上就是个调用bandizip的小脚本,虽然写的挺烂但还是发一下吧  
链接:https://pan.baidu.com/s/1s7UYEPYQoZeZsc_mC838Cg 提取码:wouz 
会删掉原文件会删掉原文件会删掉原文件

目前就是把main.exe放进和这些解压码为目录的同级目录下,双击解压一层,再双击一次一般就完事了。(其实之前做了自动解两层的,但是有的朋友发的资源格式有点不适配所以还是手操一下吧。

需要下载bandizip并且配置一下环境变量,楼主用的版本链接
链接:https://pan.baidu.com/s/1qj9aUaYUDPvxW7H4zGdIAA 提取码:ygrk 
环境变量配置方法
楼主是win11,win10应该一样,环境变量->找到path->编辑->新建
将bandizip的路径复制进去,就是bandizip.exe和bz.exe所在的路径,比如楼主的就是C:\Program Files\Bandizip

cmd里输入bz有显示版本信息就是成功了

以楼主今晚要康的为例来详细说一下
首先以解压密码来命名文件夹,资源用秒传可以比较方便的放到对应的文件夹里

下载下来以后将main.exe拖到和这些文件夹同级目录下,请保证没有其他的文件在这个目录下(虽然有简单的校验但是并不严谨

双击exe以后就会解压一层,当出现黑色cmd框时才说明解压完成(放到pipe跑的不要看zip删完了就又点一次

因为有极少数资源既不是两层解压又不是直接解压成一个文件夹,所以这种资源要手操一下

大致看一下再双击一次,大部分两层解压的就完事了(解压后效果

n合1这种合集建议单独拿出来,因为设置是直接覆盖,所以可能会刷掉重名资源
没有测试过其他机子,毕竟本人使用直接就直接在编译器里跑了,代码附在下面,感觉直接用代码会比较好

none.gif

kksl

B1F  2023-01-23 13:40
(kksl)
发错了,这个才是
链接:https://pan.baidu.com/s/1kJUs7uOkXd-ynUIOP9xZkw
提取码:r0cj

none.gif

kksl

B2F  2023-01-23 13:42
(kksl)
import os
import struct
p = os.getcwd()
# p = r"F:\temp"
File_list = os.listdir(p)
dirs = [os.path.join(p, x) for x in File_list]
type_dict = {
    '504B0304': 'zip',
'52617221': 'rar',
'377ABCAF271C': '7z',
}
max_len = len(max(type_dict, key=len)) // 2

def get_filetype(filename):
    # 读取二进制文件开头一定的长度
with open(filename, 'rb') as f:
        byte = f.read(max_len)
    # 解析为元组
byte_list = struct.unpack('B' * max_len, byte)
    # 转为16进制
code = ''.join([('%X' % each).zfill(2) for each in byte_list])
    # 根据标识符筛选判断文件格式
result = list(filter(lambda x: code.startswith(x), type_dict))
    if result:
        return type_dict[result[0]]
    else:
        return 'other'

def npZip(d, count):
    if os.path.isdir(d):
        dp = os.listdir(d)
        po = [os.path.join(d, x) for x in dp]
        password1 = os.path.basename(d)
        count = 0
for file in dp:
            flie_suffix = os.path.splitext(file)
            if not os.path.isdir(po[count]):
                oldname = d + "\\" + file
                newname = d + "\\" + flie_suffix[0] + ".zip"
real_suffix = get_filetype(oldname)
                print(real_suffix)
                print(oldname)
                print(newname)
                if not real_suffix == 'other':
                    os.rename(oldname, newname)
                    cmd = 'bz.exe x -aoa -o:' + "\"" + d + "\"" + " -y -p:" + password1 + " " + "\"" + newname + "\"" + " >nul 2>nul"
ii = os.popen(cmd)
                    ii.close()
                    if ii:
                        os.remove(newname)
                        print(newname)
            count += 1

if __name__ == '__main__':
    for i in range(len(dirs)):
        if os.path.isdir(dirs):
            npZip(dirs, 0)
    os.system("pause")
[/pre]

1218252.jpg

人性/兽性

B3F  2023-01-23 13:50
(重复)
哇偶,是大佬   试了几次才能正常运行 ?

none.gif

acbd

B4F  2023-01-23 14:39
(学习,爽!)
可以试试smartzip

fb5a9b259d0048b3.gif

曙光依旧

B5F  2023-01-23 15:19
(暗泽之上,荼蘼盛开)
nark

1355725.jpg

撸树

B6F  2023-01-23 17:07
(其实这话我本没说过,只是说是我说的人多了,也就变成了我说的)
麦克