![Board logo](images/default/logo.gif)
标题: [文件操作] [分享]批处理调用7-Zip压缩每50个文件夹一个包 [打印本页]
作者: Batcher 时间: 2021-8-30 19:23 标题: [分享]批处理调用7-Zip压缩每50个文件夹一个包
【需求】
想要固定50个文件夹压缩成一个压缩包,但是可能文件夹中只有101个文件夹的情况,如果是这样就 50、50、1 这样各自压缩成三个压缩包,并且压缩包的文件名 命名方式为:第一个压缩包里的第1个名字-第50个名字
【代码】- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- set "n=0"
- for /f "delims=" %%i in ('dir /b /ad') do (
- set /a n+=1
- if !n! equ 1 (
- set "ZipFile=%%i"
- )
- "C:\Program Files\7-Zip\7z.exe" a "!ZipFile!.zip" "%%i"
- if !n! equ 50 (
- ren "!ZipFile!.zip" "!ZipFile!-%%i.zip"
- set n=0
- )
- )
复制代码
作者: Batcher 时间: 2021-8-30 22:09
【问题】
t 测试压缩档案文件的完整性。
7z t archive.zip *.doc :在压缩档案 archive.zip 中测试 *.doc 文件的完整性。
如果只是想测试压缩包是否正常,无损坏情况,应该怎么判定
我想要得到的结果是 检测当前目录下的压缩包 zip格式,并且生成日志,日志格式:压缩包名:检测结果
【代码】- @echo off
- cd /d "%~dp0"
- (for /f "delims=" %%i in ('dir /b /a-d *.zip') do (
- set /p =%%i: <nul
- "C:\Program Files\7-Zip\7z.exe" t "%%i" | findstr "^Everything is Ok$" >nul
- if errorlevel 1 (
- echo FAIL
- ) else (
- echo SUCCESS
- )
- ))>"list.txt"
复制代码
作者: yyz219 时间: 2022-12-13 22:23
【问题】
t 测试压缩档案文件的完整性。
7z t archive.zip *.doc :在压缩档案 archive.zip 中测试 *.doc ...
Batcher 发表于 2021-8-30 22:09 ![](http://www.bathome.net/images/common/back.gif)
感谢分享
作者: cnnetstar 时间: 2023-2-7 16:26
【需求】
想要固定50个文件夹压缩成一个压缩包,但是可能文件夹中只有101个文件夹的情况,如果是这样就 50 ...
Batcher 发表于 2021-8-30 19:23 ![](http://www.bathome.net/images/common/back.gif)
请问大佬: 这个我想给改进成文件夹下的文件按默认名称排序开始合计大小不超过好比1.8G成为一个独立的ZIP文件, 名字以其所在文件夹加001,002等序号命名, 如何完善?
作者: Batcher 时间: 2023-2-8 09:59
回复 4# cnnetstar
压缩之前的多个文件合计1.8GB?还是压缩之后单个zip文件1.8GB?
每个zip文件独立?还是整个文件夹分卷压缩每个zip文件1.8GB?
作者: cnnetstar 时间: 2023-2-8 15:26
回复 5# Batcher
好比文件夹下按默认名称顺序前30个文件累计为小于1.8G, 前31个就大于1.8G了. 就只压缩前30个文件为一个独立的ZIP, 命名为文件夹001. 然后第31个文件起, 累计最接近1.8G第二个独立的ZIP, 依此类推直到整个夹子下文件全部完成压缩. 感谢!
作者: 523066680 时间: 2023-2-8 16:04
这个标题让我想起一条评论:
这个东西很贵,500克一斤 ![](http://bbs.bathome.net/images/smilies/default/lol.gif)
作者: buyiyang 时间: 2023-2-8 17:00
回复 6# cnnetstar
是你提的问题?我再回答一下- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- set /a n=1
- set /a m=0
- for /f "delims=" %%i in ('dir /b /ad') do (
- set /a n+=1
- set "_!n!=%%i"
- )
- set /a n=0
- for /f "delims=" %%i in ('dir /b /ad') do (
- for /f "delims=" %%a in ('powershell -c "(Get-ChildItem -Path '%%i' -Force -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum"') do (
- set /a m+=%%a
- set /a byte=%%a
- )
- set /a n+=1
- if !n! equ 1 (set "ZipFile=%%i")
- rem 小于(lss)多少字节,1.8GiB约1932735283byte,自己改软件路径或设置环境变量
- if !m! lss 1932735283 ("7z.exe" a "!ZipFile!.zip" "%%i") else (
- call ren "!ZipFile!.zip" "!ZipFile!-%%_!n!%%.zip"
- "7z.exe" a "%%i.zip" "%%i"
- set "ZipFile=%%i"
- set /a m=!byte!
- )
- )
- pause
复制代码
作者: cnnetstar 时间: 2023-2-8 18:53
回复 8# buyiyang
十分感谢!群里是我提的.
作者: yyz219 时间: 2023-2-8 20:01
感谢分享哦
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |