1

我有一个文件批处理将文件夹中的所有 RAR 文件解压缩到子文件夹中。

C:\test\sub-folder\file.rar -> C:\test\sub-folder\fileunrar

但是当我运行它时,文件被解压到基本文件夹:

C:\test\sub-folder\file.rar -> C:\test\fileunrar

这是我目前正在使用的批处理文件:

@ECHO OFF
cd C:\test
SET PATH=C:;C:\Program Files\WinRAR;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;%PATH%
FOR /f "delims=" %%d IN ('DIR /B') DO unRaR x -y -r -o- *.rar
EXIT

为什么 RAR 档案被提取到基本文件夹?

4

1 回答 1

3

WinRARRar.txt的程序文件夹中有一个文本文件,它是控制台版本的手册,其中还包含所有支持的命令和开关,当然不能创建、更新或修复 RAR 存档。Rar.exeUnRAR.exe

在没有任何参数的情况下在命令提示符窗口中运行UnRAR.exe会导致显示所有支持的命令和开关以及简要说明。

UnRAR,RarWinRAR支持在一个目录中解压多个 *.rar 文件,而无需使用单个命令的FOR循环批处理文件。

对于解压多卷存档,在命令行上指定第一个 RAR 存档文件的文件名就足够了。UnRARRarWinRAR自动检测该文件是多卷存档的第一个文件并自动处理所有卷。

当然UnRAR,当解压包含多个独立档案以及 1 个或多个多卷档案的文件夹中的所有 *.rar 文件时,不要多次处理每个 *.rar 文件RarWinRAR

对于使用单行解压缩多个独立的 *.rar 档案,该开关-ad可能有助于避免所有独立档案的内容合并到同一目录中。

要将目录中的所有 *.rar 存档解压缩C:\Temp到目录C:\Temp\Extracted,并将所有存档中的文件和文件夹合并到该目录并自动覆盖所有现有文件,请使用以下命令:

"%ProgramFiles%\WinRAR\UnRAR.exe" x -c- -cfg- -inul -o+ -y "C:\Temp\*.rar" "C:\Temp\Extracted\"

提取所有 *.rar 文件,C:\Temp并将每个独立的存档提取到C:\Temp\Extracted带有存档文件名称的子目录中,可以通过以下方式实现:

"%ProgramFiles%\WinRAR\UnRAR.exe" x -ad -c- -cfg- -inul -o+ -y "C:\Temp\*.rar" "C:\Temp\Extracted\"

该开关-ad使输出文件夹有所不同。

解压缩档案是否C:\Temp\Extracted已经存在或尚不存在都没有关系。UnRARRarWinRAR在提取时始终创建整个目录树以输出文件夹,如果这是必要的,当然可能(写权限,驱动器/共享存在并且没有写保护)。

让我们看一个例子来使差异更加清晰。

有 2 个 RAR 档案MyFirstArchive.rarAnotherArchive.rar其中C:\Temp包含以下文件和文件夹。

我的第一档案.rar

 Attributes      Size    Date   Time   Name
----------- ---------  -------- -----  ----
    .......      6302  11-10-15 15:25  zzz.doc
    .......    940942  26-08-15 08:07  yyy.txt
    .......   1430688  06-10-14 05:49  Folder1\xxx.pdf
    ...D...         0  12-10-15 07:10  Folder1
----------- ---------  -------- -----  ----
              2377932                  4

另一个存档.rar

 Attributes      Size    Date   Time   Name
----------- ---------  -------- -----  ----
    .......     28165  08-01-12 17:50  zzz.doc
    .......      3743  29-10-14 07:18  Folder2\index.txt
    .......     27141  29-10-14 07:18  Folder1\index.txt
    .......    940942  26-08-15 08:07  index.txt
    ...D...         0  12-10-15 07:10  Folder1
    ...D...         0  12-10-15 07:12  Folder2
----------- ---------  -------- -----  ----
               999991                  6

第一个命令导致:

  • C:\Temp\提取
    • 文件夹 1
      • 索引.txt
      • xxx.pdf
    • 文件夹 2
      • 索引.txt
    • 索引.txt
    • yyy.txt
    • zzz.doc

zzz.docinAnotherArchive.rar已覆盖zzz.docin MyFirstArchive.rar

带有 switch 的第二个命令-ad导致:

  • C:\Temp\提取
    • 我的第一档案
      • 文件夹 1
        • xxx.pdf
      • yyy.txt
      • zzz.doc
    • 另一个档案
      • 文件夹 1
        • 索引.txt
      • 文件夹 2
        • 索引.txt
      • 索引.txt
      • zzz.doc

将 2 个档案的文件夹和文件提取到具有档案文件名称的单独文件夹中。

于 2015-10-08T05:51:49.903 回答