Board logo

标题: [文件操作] [已解决]使用RAR压缩文件时的问题 [打印本页]

作者: smss    时间: 2019-5-8 00:40     标题: [已解决]使用RAR压缩文件时的问题

拖拽一个文件A(中有1 2 3 等文件)
  1. winrar a %~n1.zip %~n1
复制代码
生成了A.zip 打开A.zip目录结构是A然后是 1 2 3
怎样生成一个目录结构是A.zip直接就是 1 2 3

问题2 A文件下有 1 2 3 等文件
对A文件目录下所有子目录分别压缩 1 2 3 成1.zip 2.zip 3.zip...然后再压缩成一个A.zip
作者: Batcher    时间: 2019-5-8 08:22

到底哪个是文件哪个是文件夹?
作者: yhcfsr    时间: 2019-5-8 09:21

  1. winrar a c:\a.zip 1
  2. winrar a c:\a.zip 2
  3. winrar a c:\a.zip 3
复制代码
第二问同理推导吧
作者: Batcher    时间: 2019-5-8 09:31

回复 3# yhcfsr


猜测楼主的意思,第一问应该是这样吧:
winrar a -ep %~n1.zip %~n1
作者: smss    时间: 2019-5-8 12:46

本帖最后由 smss 于 2019-5-8 12:50 编辑
回复  yhcfsr


猜测楼主的意思,第一问应该是这样吧:
winrar a -ep %~n1.zip %~n1
Batcher 发表于 2019-5-8 09:31
  1. set "zip=C:\Program Files\7-Zip\7z.exe"
  2. cd %1\icons
  3. for /d %%i in (*) do "%zip%" a "%1\A\icons.zip" "%%i"
  4. cd %1\lockscreen
  5. for /d %%i in (*) do "%zip%" a "%1\A\lockscreen.zip" "%%i"
  6. cd %1\A&for /f "tokens=*" %%i in ('dir/b') do ren "%%i" "%%~ni"
  7. "%zip%" a %1.zip icons lockscreen
  8. cd %1\&"%zip%" a %1.zip wallpaper preview description.xml
  9. cd ..&ren "%~n1.zip" "%~n1.mtz"&rmdir /Q/S %1\A&exit
复制代码
才睡醒回复不及时见谅 昨晚几乎没睡 从RAR换成了7Z 。。。
A是文件夹lockscreen icons是其下的子文件夹 当然还有其它
目标是把A下所子文件夹(除了preview wallpaper文件夹和description.xml文件)压缩为zip后并删除后缀 然后把A下的preview wallpaper文件夹description.xml和生成的lockscreen icons一起再压缩成A.zip后改后缀为.mtz
作者: Batcher    时间: 2019-5-8 12:49

回复 5# smss


    4楼的代码能否解决1楼的第一问?
作者: smss    时间: 2019-5-8 12:54

回复  smss


    4楼的代码能否解决1楼的第一问?
Batcher 发表于 2019-5-8 12:49

肯定不可能啊 RAR压缩时生成的目录会成为A.zip—A-1。。。需要的是打开A.zip就看到子文件夹
作者: Batcher    时间: 2019-5-8 13:57

回复 7# smss


拖拽一个文件A(中有1 2 3 等文件

这样理解没错吧?
作者: smss    时间: 2019-5-8 14:09

本帖最后由 smss 于 2019-5-8 14:43 编辑
回复  smss



这样理解没错吧?
Batcher 发表于 2019-5-8 13:57
  1. @echo off
  2. set "zip=C:\Program Files\7-Zip\7z.exe"
  3. if exist %1\ (goto B) else goto A
  4. :A
  5. "%zip%" x "%1" -y -aoa -o"%~n1">nul
  6. ren %~n1\* *.zip&ren %~n1\description.zip description.xml>nul
  7. for /r %%i in ("*.zip") do ("%zip%" x %%i -y -aos -o"%~n1\*\")>nul
  8. del /s/q/f/a %~n1\*.DS_Store %~n1\*.zip>nul
  9. echo 解包完毕!&ping 0 -n "2">nul&exit
  10. :B
  11. cd %1\icons
  12. for /d %%i in (*) do "%zip%" a "%1\A\icons.zip" "%%i"
  13. cd %1\lockscreen
  14. for /d %%i in (*) do "%zip%" a "%1\A\lockscreen.zip" "%%i"
  15. cd %1\A&for /f "tokens=*" %%i in ('dir/b') do ren "%%i" "%%~ni"
  16. "%zip%" a %1.zip icons lockscreen
  17. cd %1\&"%zip%" a %1.zip wallpaper preview description.xml
  18. cd ..&if exist %~n1.mtz (del /s/q/f/a %~n1.mtz) else ren "%~n1.zip" "%~n1.mtz"&rmdir /Q/S %1\A
  19. echo 打包完毕!&ping 0 -n "2">nul&exit
复制代码
已解决想精减优化下打包时的 就是排除wallpaper preview description.xml把其它子文件打包成ZIP后删除后缀再和其它文件打包生成父文件
作者: Batcher    时间: 2019-5-8 14:34

1.bat
  1. @echo off
  2. pushd "%1"
  3. for /d %%i in (*) do (
  4.     WinRAR.exe a -ibck "..\%~nx1.zip" "%%i"
  5. )
复制代码

作者: smss    时间: 2019-5-8 14:42

本帖最后由 smss 于 2019-5-8 14:54 编辑
1.bat
Batcher 发表于 2019-5-8 14:34
老大这个真不行 我放弃RAR了 现在用7Z看打包部分问题是怎样把一个文件夹下所有子文件夹打包成对应ZIP 而不是需要逐个CD至对应子文件下再执行打包命令!!!
cd %1\icons
for /d %%i in (*) do "%zip%" a "%1\A\icons.zip" "%%i"
cd %1\lockscreen
for /d %%i in (*) do "%zip%" a "%1\A\lockscreen.zip" "%%i"
cd %1\A&for /f "tokens=*" %%i in ('dir/b') do ren "%%i" "%%~ni"
"%zip%" a %1.zip icons lockscreen
看红色部分
作者: Batcher    时间: 2019-5-8 14:45

回复 11# smss


    我这边测试没有发现问题,把你1楼问题1的测试用例和测试代码打包传上来我试试




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