使用通配符进行 Powershell 解压

使用通配符进行 Powershell 解压

我正在尝试提取大约 40 个文件夹,每个文件夹都包含一个 rar,但我从未在 powershell 中这样做过。在 bash 中,您可以使用*/*.rar通配符来提取它们,但我如何在 powershell 中做到这一点?我尝试了一些

C:\Program Files (x86)\Unrar\UnRAR.exe' x  .\*\*.rar 

但它的错误:

UNRAR 4.10 freeware      Copyright (c) 1993-2012 Alexander Roshal

Cannot read contents of .\*\*.rar
The filename, directory name, or volume label syntax is incorrect.

答案1

我用的是这个:

$parent = 'c:\myrar_files'

$files = @()

Get-ChildItem $parent -Recurse -Filter "*.rar" | % {

    # Recurse through all subfolders looking for .rar files only.

    $files = $files + $_.FullName
}

foreach ($f in $files) {

    # UnRAR the files. -y responds Yes to any queries UnRAR may have.

   C:\scripts\WinRAR\unrar x -y $f
}

答案2

先测试一下,因为我没有东西可以测试

get-childitem -recurse -filter *.rar | %{"C:\Program Files (x86)\Unrar\UnRAR.exe" x $_.fullpath}

我不能 100% 确定 x 是否会导致它提取到当前目录或 rar 文件的目录,因此您可能必须在命令中添加 cd。

get-childitem -recurse -filter *.rar | %{cd $_.directory; "C:\Program Files (x86)\Unrar\UnRAR.exe" x $_.name}

相关内容