[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 6# fzp070
晚上测试发现一个问题,,当我需转换的压缩包一多的时候,会出现zip包里 好几个其它包的文件都有的现象

TOP

改进一版,解决了7z处理完仍继续跑完密码。
转换过的7z将其移动了"已转换的7z"文件夹内,你可以自行修改下 移动到其它位置或删除或改后缀名 都行。
  1. @echo off
  2. mkdir "%~dp0已转换的7z"
  3. echo. 读取文本密码
  4. for /f "delims=" %%x in ('TYPE pw.txt')do (set pw=%%x &call :chpw)
  5. echo 运行结束
  6. rd ~Tmp /s /q >nul 2>nul
  7. pause
  8. exit
  9. :chpw
  10. echo. 7z转换zip
  11. path "%ProgramFiles%\7-Zip";%path%
  12. setlocal enabledelayedexpansion
  13. for /f "delims=" %%i in ('dir /b /a-d *.7z') do (set zf=%%i
  14. 7z x "!zf!" -p!pw! -o"%~dp0~Tmp" -aoa &&7z a "%%~dpni.zip" "%~dp0~Tmp\*" -y -sdel &&goto pass
  15. )
  16. goto :eof
  17. :pass
  18. move "!zf!" "%cd%\已转换的7z\"
  19. rd ~Tmp /s /q >nul 2>nul
  20. (for /f "delims=" %%a in ('dir /b /a-d *.7z') do set zf2=%%a)>nul 2>nul
  21. if "%zf2%"=="" goto ok
  22. goto :eof
  23. :ok
  24. echo 【7z转换zip已完成】
  25. pause
  26. exit
复制代码
1

评分人数

    • holley: 乐于助人!不好意思,权限有限。技术 + 1

TOP

本帖最后由 fzp070 于 2022-8-17 15:59 编辑

看了下,你的读取密码变量!pw!,只获取到了文本中的最后一个密码,所以会不正确,导致解密并打包zip失败。
我试了下这样子是可以的,但是有个弊端,就是已解压转zip成功,也会将文本所有密码跑完,建议增加一个检查转换成功就切换。
  1. @echo off
  2. echo. 读取文本密码
  3. for /f "delims=" %%x in ('TYPE pw.txt')do (set pw=%%x &call :chpw)
  4. echo 转换zip完成
  5. pause
  6. exit
  7. :chpw
  8. setlocal enabledelayedexpansion
  9. echo. 7z转换zip
  10. path "%ProgramFiles%\7-Zip";%path%
  11. for /f "delims=" %%i in ('dir /b /s /a-d *.7z') do (
  12.     7z x "%%i" -o"%~dp0~Tmp" -r -y -aos -p!pw! &&7z a "%%~dpni.zip" "%~dp0~Tmp\*" -y -sdel
  13. rd ~Tmp /s /q
  14. )
  15. goto :eof
复制代码

TOP

  1. @echo on
  2. setlocal enabledelayedexpansion
  3. :pw
  4. echo. 读取文本密码
  5. for /f "delims=" %%x in ('TYPE pw.txt')do (
  6. set pw=%%x
  7. )
  8. :chpw
  9. echo. 7z转换zip
  10. path "%ProgramFiles%\7-Zip";%path%
  11. (
  12. for /f "delims=" %%i in ('dir /b /s /a-d *.7z') do (
  13.     7z x "%%i" -o"%~dp0~Tmp" -r -y -aos
  14.     7z a "%%~dpni.zip" "%~dp0~Tmp\*" -y -sdel
  15. )
  16. )<pw.txt
  17. rd ~Tmp /s /q
复制代码
微信:flashercs
QQ:49908356

TOP

回复 2# fzp070


    我测试 单个密码只传递一次没问题 多个密码貌似就没法正常转换了

TOP

刚刚试了下,有密码也没问题啊!
建议你看下转换失败的,到底有没有解压成功?"%~dp0~Tmp"这个目录有没有解压的文件

TOP

返回列表