Board logo

标题: [文件操作] 求教:批处理 使用winrar,遍历并压缩当前路径下各目录中的子目录 [打印本页]

作者: blueskyforme    时间: 2021-8-25 11:58     标题: 求教:批处理 使用winrar,遍历并压缩当前路径下各目录中的子目录

本帖最后由 blueskyforme 于 2021-8-25 13:43 编辑

具体的情况是:

一个路径下,假如有5个目录,每个目录里都有一个子文件夹。那么我需要一个程序进行判断,如果当前路径的各目录下存在一个子目录,就把这个子目录压缩成一个.7z的压缩包(密码123456),并且创建一个和子目录路径相同的.txt文件,命名“ABC.txt”.

假设winrar的安装路径为 c:\program files\winrar\rar.exe

请问这个bat程序该如何写?谢谢大神指教!

举例:

压缩前:
<目录1>/<子目录1>
<目录2>/<子目录2>
<目录3>/<子目录3>
<目录4>/<子目录4>
<目录5>/<子目录5>

压缩处理后:
<目录1>/子目录1.7z & ABC.txt
<目录2>/子目录2.7z & ABC.txt
<目录3>/子目录3.7z & ABC.txt
<目录4>/子目录4.7z & ABC.txt
<目录5>/子目录5.7z & ABC.txt
作者: Batcher    时间: 2021-8-26 09:47

回复 1# blueskyforme
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     pushd "%%i"
  5.     for /f "delims=" %%j in ('dir /b /ad') do (
  6.         "C:\Program Files\WinRAR\rar.exe" a "%%j.7z" "%%j"
  7.         type nul >"%%j.txt"
  8.     )
  9.     popd
  10. )
复制代码

作者: blueskyforme    时间: 2021-8-26 21:03

本帖最后由 blueskyforme 于 2021-8-26 22:03 编辑

回复 2# Batcher


    感谢大神。有个问题请教一下。
    如果我想把这个压缩好的文件,移动到最开始路径下,需要怎么做?我写了这么一行: move "%%j.7z" "%%i"
    结果只是修改了名字,文件并没有移动过去。。。

非常感谢你。
作者: Batcher    时间: 2021-8-27 00:12

回复 3# blueskyforme
  1. move "%%j.7z" ..
复制代码
BAT脚本里面..表示上级目录
作者: blueskyforme    时间: 2021-8-28 07:16

回复 4# Batcher


    好的,感谢




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