找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 20432|回复: 4

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

[复制链接]
发表于 2021-8-25 11:58:12 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2021-8-26 09:47:01 | 显示全部楼层
回复 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. )
复制代码
 楼主| 发表于 2021-8-26 21:03:11 | 显示全部楼层
本帖最后由 blueskyforme 于 2021-8-26 22:03 编辑

回复 2# Batcher


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

非常感谢你。
发表于 2021-8-27 00:12:50 | 显示全部楼层
回复 3# blueskyforme
  1. move "%%j.7z" ..
复制代码
BAT脚本里面..表示上级目录
 楼主| 发表于 2021-8-28 07:16:20 | 显示全部楼层
回复 4# Batcher


    好的,感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:42 , Processed in 0.031596 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表