如何解压一个文件夹的所有子文件夹中的所有rar压缩包,然后删除这些压缩包?

2024-01-16

我想解压主文件夹中某些子文件夹中的所有文件,解压后删除 xxx.rar 文件并将包含文件的文件夹移动到另一个位置。

  • Main Folder
    • 子文件夹1(带有 .rar 文件)
    • 子文件夹2(带有 .rar 文件)
    • 子文件夹3(带有 .rar 文件)

这是我的批处理脚本,到目前为止一直有效。

SET "sourcefolder=C:\Users\Unpack"
FOR /R %sourcefolder% %%X in (*.rar) do (
    pushd "%%~dpX"
    "C:\Program Files\WinRAR\Rar.exe" x -y "%%X" "*.*" && del "*.rar"
    popd
)
for /d /r %sourcefolder% %%x in (*) do move "%%x" "C:\Users\New-Location")

但我希望将文件解压后的每个子文件夹立即移至“New-Location”文件夹,而不仅仅是在主文件夹中解压所有内容之后。

我必须在代码中更改一些想法?


这个小批处理代码希望能够满足您的需求。

@echo off
set "SourceFolder=C:\Users\Unpack"
set "TargetFolder=C:\Users\New-Location"
if not exist "%TargetFolder%" md "%TargetFolder%"
"%ProgramFiles%\WinRAR\Rar.exe" x -ad -cfg- -idq -r -y "%SourceFolder%\*.rar" "%TargetFolder%"
del /F /Q /S "%SourceFolder%\*.rar">nul
for /D %%D in ("%SourceFolder%\*") do rd "%%D" 2>nul

主机版Rar.exe比大多数从不阅读手册的用户更强大Rar.txt存储在程序文件夹中WinRAR都知道。

可以直接解压源文件夹所有子文件夹中的所有 *.rar 文件Rar.exe可以看出,因为没有for批处理代码中使用了循环。Rar.exe支持解压 RAR 压缩文件时使用通配符并切换-r按命令使用x导致处理所有 RAR 存档文件以及所有子文件夹中的文件,如手册所述。

Option -ad意义将存档名称附加到目标路径可以从中删除RAR命令行,如果所有存档都包含唯一的文件夹名称,或者所有存档应解压到同一目录中,并覆盖之前解压的先前存档中的现有文件。的用法-ad取决于存档文件的内容。

Option -idq表示安静模式,即只输出错误消息,但不输出进度信息,速度更快。

解压后删除所有 *.rar 文件也不需要for循环作为命令del还支持删除文件夹所有子文件夹中的所有 *.rar 文件。

Edit:

要在删除所有 RAR 文件后删除源文件夹中的所有子文件夹为空,但保留源文件夹,for循环最终是必要的,如添加到上面的代码中一样。

命令忽略不为空的子文件夹rd因为参数/S /Q不使用会删除子文件夹,即使尚未完全清空。

错误信息为rd输出到stderr如果要删除的子文件夹不为空,则重定向到设备nul来压制它。

要在解压所有 RAR 压缩包后删除源文件夹的所有子文件夹(无论这些子文件夹包含什么内容),但保留源文件夹,上面批处理代码的最后两行需要替换为以下行:

for /D %%D in ("%SourceFolder%\*") do rd /S /Q "%%D" 2>nul

为了删除源文件夹及其所有子文件夹,上面批处理代码的最后两行需要替换为以下行:

rd /S /Q "%SourceFolder%" 2>nul

注意:可以通过以下方式删除文件夹rd仅当它不是 Windows 上任何正在运行的进程的当前工作目录时。

可以通过打开命令提示符窗口并在其中运行来阅读批处理文件中使用的每个命令的帮助:

  • del /?
  • for /?
  • if /?
  • md /?
  • rd /?
  • set /?
  • "%ProgramFiles%\WinRAR\Rar.exe" /?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何解压一个文件夹的所有子文件夹中的所有rar压缩包,然后删除这些压缩包? 的相关文章

  • 如何将 CMD shell 变量展开两次(递归)

    使用 Windows XP CMD 命令行 我可以将变量展开两次 如下所示 set AAA BBB set BBB CCC for F usebackq tokens i in echo AAA do echo i 会回声CCC I e A
  • Windows 批处理 FOR 命令制表符分隔符

    我正在尝试使用 Windows 批处理FOR命令 http www microsoft com resources documentation windows xp all proddocs en us for mspx mfr true
  • 将文件的路径位置更改为所需路径

    我想将文件中定义的内容路径 即logging properties 替换为jboss7位置的所需位置路径 基本上我正在使用安装程序 我必须浏览我的 jboss7 文件夹并将其定位到用户所需的任何位置 但在 jboss7 的几个文件中 有一些
  • 批处理 - 解析 Tracert 的输出

    我想寻求有关 Windows 中 Tracert 输出的一些帮助 即我有以下输出 Tracing route to Y Y Y Y over a maximum of 30 hops 1 1 ms 1 ms 1 ms X X X X 2 1
  • 命令提示符中的代码在批处理文件中不起作用

    当我在命令提示符中执行下面的代码时 它会执行我想要的操作 但当我将其放入 bat 文件并尝试执行它时 它不会执行我想要的操作 for f a in dir b csv do for f tokens b in a do echo b a g
  • Windows 在 PATH 中搜索可执行文件的相对顺序是什么?

    如果我有a com a cmd a bat and a exe我的文件中的 PATH 如果我只调用该命令 Windows 会选择哪一个a 这是微软官方指定的吗 我只是想包裹我的gvim exe可执行文件 n 但是我的gvim bat似乎既不
  • 在Powershell中执行批处理文件

    我想从批处理文件执行以下命令 C OpenCover tools OpenCover Console exe register user target VS110COMNTOOLS IDE mstest exe targetargs tes
  • 使用单个字符串查找多个文件路径

    我尝试编写一个批处理脚本来查找与输入字符串同名的文件的所有路径 现在它只能找到找到的第一个文件 我想不出一种方法让它列出多个文件位置 我经验不足 需要一些帮助 这是脚本代码的一部分 start cls echo Enter file nam
  • ERRORLEVEL 与 %ERRORLEVEL% 与感叹号 ERRORLEVEL 感叹号

    我想我对 ERRORLEVEL 与 ERRORLEVEL 有基本的了解 但是 ERRORLEVEL 让我困惑 我正在制作一个调用可执行文件的脚本 然后使用任务列表来查看它是否正在运行 然后使用taskkill来杀死它 如果是 然后尝试输出错
  • 批处理文件随机删除文本文件的一半行?

    我需要一种方法来使用批处理来查看文本文件的每一行 并删除该文本文件中的一半行 随机选择要删除的行 这是为了模拟 D D 游戏中的锦标赛 我所需要的只是一种方法来淘汰每轮比赛的获胜者 我可以轻松地制作一个批处理文件 复制文本文件并为每一轮重命
  • 批处理文件中的 URL 解码

    如何在批处理文件中 urldecode 以下字符串 我需要更改以下内容 http x3a x2f x2f www example com x2f some page x2f some x2f link html to this http w
  • 如何将批处理变量设置为另一个脚本的输出

    我尝试将批处理变量设置为另一个命令的输出 在 Linux Unix 中 您可以简单地使用反引号 例如 在 csh 中 set MY VAR tail etc passwd windows 批处理中有类似的东西吗 实际上我已经发现了一些东西
  • Windows批处理文件:在for循环中设置变量

    我有许多具有相同命名方案的文件 作为示例 四个文件分别称为 num 001 001 txt num 002 001 txt num 002 002 txt num 002 003 txt 第一组数字代表它来自哪个 包 第二组数字只是用来区分
  • windows bat 文件中的 bang 字符是什么意思?

    我正在尝试更正一个使用 bang 字符的 bat 文件 我本来期望某种形式的引用 就像是 set some var some var 然后后来 some command some var 看起来第一个是在禁用回显的情况下提示输入 例如提示输
  • shell进程的并行执行

    有没有一个工具可以在 Windows 批处理文件中并行执行多个进程 我发现了一些有趣的 Linux 工具 parallel http mi eng cam ac uk er258 code parallel html and PPSS ht
  • Subversion 中的忽略文件会从 svn:ignore 属性中删除旧值

    我有一个 Subversion 工作副本G csmdepot 构建其中有不同的文件 有些被忽略 有些则没有 我忽略了 Tortoise 的文件 Build 1 wimignored Build 2 wimignored WimID xml
  • 为什么 choice.com 在批处理文件中创建无限循环?

    昨天我已经下载了choice com命令从这里FTP link ftp ftp microsoft com Services TechNet Windows msdos RESKIT SUPPDISK CHOICE COM在 Windows
  • 如何清除通过“set /p var1=”从命令行设置的变量

    在 Windows 批处理文件中 我接受来自用户输入的变量set p var1 after var1已使用 我不知道如何重置 清除其值 如果我不重置 清除它的值 当用户遇到set p var1 再次 用户直接输入 之前的输入值仍然存在 我不
  • 批处理:在特定程序中打开特定文件?

    当记事本是 txt 文件的默认程序时 如何告诉 Windows 在写字板中打开 C test test txt 接受的答案对我不起作用 我不确定这是因为我试图运行的程序 还是因为路径中有空格 即使我用引号引起来 或者其他原因 不管怎样 我可
  • 如何在批处理文件中测试当前驱动器号?

    我正在尝试编写一个批处理文件 该文件获取运行批处理文件的驱动器号 并使用它的 IF 语句 例如如果字母是M 则会跳转到标签 mSection 这可能吗 您可以使用 d0 来获取驱动器号 像这样的东西 IF d0 M CALL mSectio

随机推荐

  • Android:如何使用 HttpsURLConnection 以编程方式登录网页

    我是 Android 新手 也是 Java 新手 如果我的问题是一个基本命题 那么很抱歉 我必须编写一个 Android 应用程序 在后台登录一个 aspx 网页 从中获取一些数据 然后从该网页注销 并以编程方式完成这一切 基本上 该过程就
  • 使用 datetime.strftime 显示时区偏移中的 : 字符 [重复]

    这个问题在这里已经有答案了 给出的格式字符串是什么strftime这将给出与我看到的相同的输出isoformat gt gt gt from datetime import datetime gt gt gt import pytz gt
  • MVVM - 视图逻辑:视图与视图模型[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 应该 视图逻辑通常驻留在哪里 在视图中 包括后面的代码 还是在视图模型中 从逻辑上讲 我理解用于修改视图 使其动态 更改其元素属性的任何内容 V
  • 解析 JSON C# 错误

    我尝试获取 JSON 数据但出现错误 解析值时遇到意外字符 路径 行 0 位置 0 我正在使用 Net 4 5 和 JSON Net 框架 这是我的代码 WebClient net new WebClient string str awai
  • UIView 和 UITableView,reloadData 奇怪的延迟

    我的视图控制器的重画有些奇怪 视图控制器包含一个 UITableView 和一个微调器 我有一个更新提要函数 由 IBOutlet 触发 带来了spinner在我的视图控制器前面并放置一个doUpdate将函数放入 NSOperationQ
  • IE10 中的 jquery UI Draggable 通过滚动条拖动时出现 bug

    我有一个带有可拖动元素的 div 它在所有浏览器中都工作得很好 除了 IE10 存在一个问题 如果您尝试通过滚动条拖动该元素 它会滚动 直到您松开鼠标 在这种情况下该元素将捕捉到鼠标的当前位置 我已经设置了这个小提琴 http jsfidd
  • 如何在 PHP 中创建新运算符?

    我看到自己在执行以下代码来默认分配 PHP 上的所有类型 variable variable variable default value 我知道 5 3 我可以做到 variable variable default value 我想通过
  • 如何替换python3中的has_key?

    我尝试安装自动自我控制 https github com andreasgrill auto selfcontrol并在执行此命令时卡住 sudo usr bin python auto selfcontrol py 它显示错误 Attri
  • 如何将 Spring Boot 配置元数据文件转换为 HTML

    我确信一定有一种优雅的转身方式Spring Boot配置元数据文件 https docs spring io spring boot docs current reference html configuration metadata ht
  • 编译成功后找不到exe

    使用opencv在microsoft Visual Studio 2008中成功调试人脸检测代码后 找不到可执行文件 没有错误 只有三个警告 但它表明构建已成功 您可以进入项目设置并检查输出文件夹 在那里查找二进制文件 二进制不一定意味着e
  • 重命名 gtsummary、tbl_regression/tbl_stack 中的行

    我正在使用 gtsummary 并使用 tbl regression 和 tbl stack 函数将 11 个不同模型的输出堆叠在一起 我希望了解一个一致自变量的优势比在不同感兴趣的因变量之间如何变化 当我打印 tbl stack 输出时
  • 如何解码令牌并获取 Django 的 djangorestframework-jwt 包的信息

    我已经开始使用 djangorestframework jwt 包而不是 PyJWT 我只是不知道如何解码传入的令牌 我知道有验证令牌方法 我需要知道的是如何解码令牌并返回信息编码 我使用此方法来解码令牌并验证用户 首先我没有使用algor
  • 以编程方式为 DataGrid 创建 WPF DataGridTemplateColumn

    我希望能够根据我的数据源以编程方式创建 DataGridTemplateColumns 例如 如果我的源在特定列中有一个日期 我希望能够利用 Datepicker 控件 我知道这可以在设计时使用 xaml 和 DataGridTemplat
  • 运行 rake 任务时如何跳过 Rails 初始值设定项的加载?

    我的 Rails 应用程序有一个网站爬虫 它加载爬虫在 Rails 初始化程序中使用的身份验证凭据config initializers 初始化程序通过调用 SiteLogin 模型中的模型方法来加载身份验证 当我跑步时rake db mi
  • 如何确保 Twitter Bootstrap 3 中的列均匀换行?

    如果我有未知数量的要显示的项目 每个项目都在自己的列中 有没有办法让它们均匀换行 而不必为每个项目创建新行 I have div class row div class col md 3 col sm 4 col xs 6 h1 Title
  • 位置始终返回“未知”

    我刚刚在真实设备上尝试了我的第一个 WP7 应用程序 我的问题是我使用地理定位来实现其中一项功能 但我总是得到位置未知 我不知道是否有任何方法可以向我的应用程序授予位置权限 或者我是否遗漏了某些内容 在手机设置中 定位服务已启用 地图应用程
  • 将云端端点模型类序列化到Android文件系统的方法

    我已经成功创建了一个云端点模型 可以轻松地从 App Engine 检索信息 为了减少往返次数并提供更快的用户体验 我确定了一个希望存储到本地存储的实例 在我的应用程序的其余部分中 我使用 ObjectInputStream 来读取和写入对
  • 使用 Visual Studio Code 对齐多行编辑光标

    使用 Visual Studio Code 的多行编辑功能 如果空白尚不存在 是否可以轻松对齐行尾列中的所有光标 类似于 Notepad 的功能 由此 To this 迈克 摩尔 Mike Moore 有这个扩展 https marketp
  • 如何为 Summernote 的插入图像对话框设置图像扩展名

    我在用夏日笔记 https summernote org 一切正常 但有一件事我不明白 以下是我在 SummerNote 中使用的设置 summerNoteElement summernote toolbar magic style h1
  • 如何解压一个文件夹的所有子文件夹中的所有rar压缩包,然后删除这些压缩包?

    我想解压主文件夹中某些子文件夹中的所有文件 解压后删除 xxx rar 文件并将包含文件的文件夹移动到另一个位置 Main Folder 子文件夹1 带有 rar 文件 子文件夹2 带有 rar 文件 子文件夹3 带有 rar 文件 这是我