我正在尝试提取大约 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}