[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [分享]批处理调用7-Zip压缩每50个文件夹一个包

【需求】
想要固定50个文件夹压缩成一个压缩包,但是可能文件夹中只有101个文件夹的情况,如果是这样就 50、50、1  这样各自压缩成三个压缩包,并且压缩包的文件名 命名方式为:第一个压缩包里的第1个名字-第50个名字

【代码】
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set "n=0"
  5. for /f "delims=" %%i in ('dir /b /ad') do (
  6.     set /a n+=1
  7.     if !n! equ 1 (
  8.         set "ZipFile=%%i"
  9.     )
  10.     "C:\Program Files\7-Zip\7z.exe" a "!ZipFile!.zip" "%%i"
  11.     if !n! equ 50 (
  12.         ren "!ZipFile!.zip" "!ZipFile!-%%i.zip"
  13.         set n=0
  14.     )
  15. )
复制代码
1

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

【问题】
t 测试压缩档案文件的完整性。
7z t archive.zip *.doc :在压缩档案 archive.zip 中测试 *.doc 文件的完整性。
如果只是想测试压缩包是否正常,无损坏情况,应该怎么判定
我想要得到的结果是 检测当前目录下的压缩包  zip格式,并且生成日志,日志格式:压缩包名:检测结果

【代码】
  1. @echo off
  2. cd /d "%~dp0"
  3. (for /f "delims=" %%i in ('dir /b /a-d *.zip') do (
  4.     set /p =%%i: <nul
  5.     "C:\Program Files\7-Zip\7z.exe" t "%%i" | findstr "^Everything is Ok$" >nul
  6.     if errorlevel 1 (
  7.         echo FAIL
  8.     ) else (
  9.         echo SUCCESS
  10.     )
  11. ))>"list.txt"
复制代码
2

评分人数

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

【问题】
t 测试压缩档案文件的完整性。
7z t archive.zip *.doc :在压缩档案 archive.zip 中测试 *.doc ...
Batcher 发表于 2021-8-30 22:09


感谢分享
我是小白,希望老师多多帮助

TOP

【需求】
想要固定50个文件夹压缩成一个压缩包,但是可能文件夹中只有101个文件夹的情况,如果是这样就 50 ...
Batcher 发表于 2021-8-30 19:23



    请问大佬: 这个我想给改进成文件夹下的文件按默认名称排序开始合计大小不超过好比1.8G成为一个独立的ZIP文件, 名字以其所在文件夹加001,002等序号命名, 如何完善?

TOP

回复 4# cnnetstar


压缩之前的多个文件合计1.8GB?还是压缩之后单个zip文件1.8GB?
每个zip文件独立?还是整个文件夹分卷压缩每个zip文件1.8GB?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# Batcher


    好比文件夹下按默认名称顺序前30个文件累计为小于1.8G, 前31个就大于1.8G了. 就只压缩前30个文件为一个独立的ZIP, 命名为文件夹001. 然后第31个文件起, 累计最接近1.8G第二个独立的ZIP, 依此类推直到整个夹子下文件全部完成压缩.   感谢!

TOP

这个标题让我想起一条评论:
这个东西很贵,500克一斤

TOP

回复 6# cnnetstar


    是你提的问题?我再回答一下
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set /a n=1
  5. set /a m=0
  6. for /f "delims=" %%i in ('dir /b /ad') do (
  7. set /a n+=1
  8. set "_!n!=%%i"
  9. )
  10. set /a n=0
  11. for /f "delims=" %%i in ('dir /b /ad') do (
  12.     for /f "delims=" %%a in ('powershell -c "(Get-ChildItem -Path '%%i' -Force -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum"') do (
  13.     set /a m+=%%a
  14.     set /a byte=%%a
  15.     )   
  16.     set /a n+=1
  17.     if !n! equ 1 (set "ZipFile=%%i")
  18. rem 小于(lss)多少字节,1.8GiB约1932735283byte,自己改软件路径或设置环境变量
  19.     if !m! lss 1932735283 ("7z.exe" a "!ZipFile!.zip" "%%i") else (
  20.         call ren "!ZipFile!.zip" "!ZipFile!-%%_!n!%%.zip"
  21.         "7z.exe" a "%%i.zip" "%%i"
  22.         set "ZipFile=%%i"
  23.         set /a m=!byte!
  24.   )
  25. )
  26. pause
复制代码

TOP

回复 8# buyiyang


    十分感谢!群里是我提的.

TOP

感谢分享哦
我是小白,希望老师多多帮助

TOP

返回列表