Board logo

标题: [文本处理] 求助rar和zip两层压缩的批处理哪里出了问题? [打印本页]

作者: yrg123    时间: 2023-6-24 15:00     标题: 求助rar和zip两层压缩的批处理哪里出了问题?

  1. rem 设置winrar路径
  2. set "winrar=D:\WinRAR\RAR.exe"
  3. rem 设置7z路径
  4. set "z7=D:\7-Zip\7z.exe"
  5. rem 设置是否加密文件名 输入是加密文件名,其它符号不加密文件名
  6. set "na=是"
  7. rem 设置密码
  8. set mm=baidu.com
  9. rem 设置压缩文件夹所在目录
  10. set "file=%~dp0"
  11. rem 设置zip保存目录
  12. set "zip=保存目录"
  13. rem 设置分卷大小以KB为单位
  14. set kb=4094000
  15. rem 设置第一次压缩后缀
  16. set "rara=_第1层压缩"
  17. rem 设置第二次压缩后缀
  18. set "zb=_第2层压缩"
  19. if /i "%na%"=="是" (set jmfiles=hp) else (set jmfiles=p)
  20. set "ziptmp=%~dp0tmp"
  21. cd /d "%~dp0"
  22. if not exist "%zip%" md  "%zip%" >nul 2>nul
  23. IF EXIST "%ziptmp%" RD /S /Q "%ziptmp%" >nul 2>nul  MD "%ziptmp%" >nul 2>nul
  24. for /F "delims=" %%x in ('dir /b /ad "%file%"') do (for /F "delims=" %%i in ('dir /b /ad "%file%%%x"') do (
  25. if /i not "%%~nxx"=="%zip%" if /i not "%%~nxx"=="tmp" ( echo 正在处理:"%%~x\%%~i"
  26. IF EXIST "%ziptmp%" (echo 删除临时目录。。
  27.   RD /S /Q "%ziptmp%" >nul)
  28.   IF NOT EXIST "%ziptmp%" (echo 创建目录。。
  29.    MD "%ziptmp%" >nul)
  30.        IF NOT EXIST  "%zip%\%%~nxx\" md "%zip%\%%~nxx\" >nul
  31.      if not exist "%zip%\%%~nxx\%%~i%zb%.01" (
  32.         echo  改名到:"%file%%%~x\%%~x%%~i"  
  33.    ren "%file%%%~x\%%~i" "%%~x%%~i"
  34.   echo 正在进行第一次压缩..
  35.     "%winrar%" a -%jmfiles%%mm% -m0 "%ziptmp%\%%~nxx%%~i%rara%.rar" -ep1 "%file%%%~x\%%~x%%~i" >nul
  36.           echo  恢复名到:"%%~i"  
  37.     ren "%file%%%~x\%%~x%%~i" "%%~i"
  38.      echo 正在进行第二次压缩..
  39.    "%z7%"  -t7z -mx=0 -p%mm%  a "%zip%\%%~nxx\%%~i%zb%.01" "%ziptmp%\%%~nxx%%~i%rara%.rar" >nul
  40.      ) else (echo *****发现文件:"%zip%\%%~nxx\%%~i%zb%.01" , 现已跳过!。。)
  41.      echo ------------------------------
  42.    )
  43. )
  44. )
  45. IF EXIST "%ziptmp%" RD /S /Q "%ziptmp%" >nul
  46. echo;
  47. echo 完成!
  48. echo;
  49. pause
  50. exit
复制代码
本bat功能:
第1层压缩,采用rar格式,压缩完要在名称末尾后添加:_第1层压缩,
第2层压缩,就用zip格式,然后在压缩文件末尾添加:_第2层压缩
最后把扩展名改成:01
作者: yrg123    时间: 2023-6-24 15:05

执行之后提示系统找不到指定的路径和系统找不到指定的文件  压缩完之后的都是1kb 解压不了
作者: 77七    时间: 2023-6-24 15:58

本帖最后由 77七 于 2023-6-24 16:06 编辑
  1. @echo off
  2. rem 压缩当前目录下的所有文件和文件夹,压缩完成后删除原文件(-df)
  3. for /f "delims=" %%a in ('dir /b ^|find /v "%~nx0"') do (
  4.         rar a "%%~na_第1层压缩.rar" -hp123456 -df "%%a"
  5.         rar a "%%~na_第2层压缩.zip" -hp123456 -df "%%~na_第1层压缩.rar"
  6.         ren "%%~na_第2层压缩.zip" "%%~na_第2层压缩.01"
  7. )
  8. pause
复制代码

修改太麻烦,需要设置目录、路径等...自己修改一下
文件夹名称不要带有点号,否则会漏掉点号后面的字符
作者: Batcher    时间: 2023-6-25 08:01

回复 2# yrg123


每行代码下面加一行:
pause
观察第一个报错是在第几行?




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2