从foreach-object解析对象变量

时间:2015-04-22 18:02:16

标签: powershell 7zip

我正在尝试从包含扩展名.sdbz的文件夹中的所有存档中提取扩展名为.sddb的所有文件。

以下是我尝试的方法:

从包含文件test.sdbz

的文件夹中
get-childitem -filter "*.sdbz" | ForEach-Object {.\7za.exe x $_.Name -o *.sddb}

似乎$ _。如果我使用命令

,名称不会被解析
7za.exe x test.sdbz -o *.sddb

从命令行运行正常。

是的,有人能帮帮我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

首先,感谢所有的回复。我发现了我的错误和解决方案。

我错误地认为在cmd中运行的命令也适用于PowerShell。

CMD版

"7za.exe x test.sdbz -o.\ *.sddb"

-o.\告诉7zip将所有内容解压缩到工作目录中。

它适用于cmd但不适用于powershell。

PowerShell版本

以下是我解决它的方法:

$workingdirectory = pwd
dir -filter "*.sdbz" | ForEach-Object {
.\7za.exe x $_.Name -o"$workingdirectory" *.sddb}

所以$_.Name部分一直在运作。的xD