将子文件夹中的所有 RAR 文件提取到其文件夹中

将子文件夹中的所有 RAR 文件提取到其文件夹中

我在 Windows 中具有以下文件夹结构:

C:\test
    |
    \----1
    |    |
    |    \----one.rar
    |
    \----2
    |    |
    |    \----two.rar
    |
    \----3
    |    |
    |    \----three.rar
    |
    \----4
    |    |
    |    \----four.rar
    |
    \----5
         |
         \----five.rar

里面C:\test有五个不同的文件夹。每个文件夹都包含一个 rar 文件。我想通过命令行提取所有文件。

所以我的方法如下:使用文件夹rar.exe 内的参数运行C:\test

rar x -r *

这给了我所有文件被提取到的结果是C:\test

C:\test
    |
    \----1    (folder)
    \----2    (folder)
    \----3    (folder)
    \----4    (folder)
    \----5    (folder)
    \----1.txt
    \----2.txt
    \----3.txt
    \----4.txt
    \----5.txt

但我希望每个文件都提取到与其关联的 rar 文件相同的文件夹中。例如,1.txt应该在C:\test\1而不是在C:\test

我怎样才能做到这一点?

答案1

答案是下面这行:

dir -Recurse | % {$_.FullName} | Split-Path | Get-Unique | % {cd $_ ; & rar x *.rar}

必须将文件夹路径“C:\Program Files\WinRAR”添加到 Windows 路径变量中,否则将找不到 rar 命令。如果您使用的是 32 位版本的 winrar,则文件夹路径为:“C:\Program Files (x86)\Winrar”。

如果您不想将路径添加到变量,则必须运行以下命令:

dir -Recurse | % {$_.FullName} | Split-Path | Get-Unique | % {cd $_ ; & "C:\Program Files\WinRAR\Rar.exe" x *.rar}

答案2

1.保存完整路径至Rar.exe

2.递归获取所有*.rar文件和完整路径

3.使用以下方法运行提取:

Full\path\to\Rar.exe:        ⁄⁄ C:\Program Files (x86)\Winrar\Rar.exe
Rar extract command:         ⁄⁄ e
Overwrite (if need):         ⁄⁄ -o+ 
Full\path\to\1.rar:          ⁄⁄ $_.fullname 
Full\path\to\extraction:     ⁄⁄ $_.Directory

C:\Program Files (x86)\Winrar\Rar.exe e -o+ $_.fullname $_.Directory
C:\Program Files (x86)\Winrar\Rar.exe e -o+ C:\test\1\1.rar C:\test\1
C:\Program Files (x86)\Winrar\Rar.exe e -o+ C:\test\2\2.rar C:\test\2
C:\Program Files (x86)\Winrar\Rar.exe e -o+ C:\test\3\3.rar C:\test\3
C:\Program Files (x86)\Winrar\Rar.exe e -o+ C:\test\4\4.rar C:\test\4
C:\Program Files (x86)\Winrar\Rar.exe e -o+ C:\test\5\5.rar C:\test\5

为了C:\Program Files (x86)\WinRAR\Rar.exe

ls -r C:\test *.rar | ? {& "${env:ProgramFiles(x86)}\Winrar\rar.exe" e -0+ $_.fullname $_.Directory}
  • 或者...,
$rar=(ls -r "${env:ProgramFiles(x86)}\Winrar\rar.exe" -Filter rar.exe -Force -EA 0).fullname 
ls -r C:\test -filter *.rar | ? { & "$rar" e -o+ $_.fullname $_.Directory }

  • 为了C:\Program Files\WinRAR\Rar.exe
ls -r C:\test *.rar | ? {& "${env:ProgramFiles}\Winrar\rar.exe" e -0+ $_.fullname $_.Directory}
  • 或者...,
$rar=(ls -r $env:ProgramFiles -Filter rar.exe -Force -EA 0).fullname 
ls -r C:\test -filter *.rar | ? { & "$rar" e -o+ $_.fullname $_.Directory }

相关内容