将存档 zip 文件解压缩到与存档 zip 文件同名的文件夹中
Unzip archive zip file into folder with same name as archive zip file
我能够使用 Powershell 脚本成功解压缩压缩文件,如下所示:
$filePath = "s:\Download Data Feed\"
$zip = Get-ChildItem -Recurse -Path $filePath | Where-Object { $_.Extension -eq ".zip" }
foreach ($file in $zip) {
Expand-7Zip -ArchiveFileName $file -Password "Password" -TargetPath $filePath
}
Read-Host -Prompt "Press Enter to exit"
zip 文件是 csv 文件。但我想要的是将 csv 文件解压缩到与 zip 文件本身同名的文件夹中(就像当您右键单击压缩文件时,您可以选择将其作为文件本身或相同的文件夹解压缩名称作为 zip 文件)。我试过查看 Expand-7Zip 命令的开关,但找不到任何开关。
谢谢
您可以执行以下操作(我无法使用 Expand-7Zip
进行测试):
$filePath = "s:\Download Data Feed\"
$zip = Get-ChildItem -File -Recurse -Path $filePath | Where-Object { $_.Extension -eq ".zip" }
foreach ($file in $zip) {
$target = Join-Path $filePath $file.BaseName
if (!(Test-Path $target -PathType Container)) {
$null = New-Item -ItemType Directory -Path $target
}
Expand-7Zip -ArchiveFileName $file -Password "Password" -TargetPath $target
}
解释:
$zip
集合中包含的每个 FileInfo
对象都有一个 属性、BaseName
,这是不带扩展名的文件名。
Join-Path 用于将路径与子路径连接起来。此处的子路径将是每次迭代期间 $file
的 BaseName
值。
Test-Path is used to verify if a path already exists. If the $target
path does not exist, it will be created due to the New-Item命令。
获取目标文件夹路径的另一种方法是简单地使用正则表达式替换,这可能更有效:
$target = $file.FullName -replace '\.zip$'
我能够使用 Powershell 脚本成功解压缩压缩文件,如下所示:
$filePath = "s:\Download Data Feed\"
$zip = Get-ChildItem -Recurse -Path $filePath | Where-Object { $_.Extension -eq ".zip" }
foreach ($file in $zip) {
Expand-7Zip -ArchiveFileName $file -Password "Password" -TargetPath $filePath
}
Read-Host -Prompt "Press Enter to exit"
zip 文件是 csv 文件。但我想要的是将 csv 文件解压缩到与 zip 文件本身同名的文件夹中(就像当您右键单击压缩文件时,您可以选择将其作为文件本身或相同的文件夹解压缩名称作为 zip 文件)。我试过查看 Expand-7Zip 命令的开关,但找不到任何开关。
谢谢
您可以执行以下操作(我无法使用 Expand-7Zip
进行测试):
$filePath = "s:\Download Data Feed\"
$zip = Get-ChildItem -File -Recurse -Path $filePath | Where-Object { $_.Extension -eq ".zip" }
foreach ($file in $zip) {
$target = Join-Path $filePath $file.BaseName
if (!(Test-Path $target -PathType Container)) {
$null = New-Item -ItemType Directory -Path $target
}
Expand-7Zip -ArchiveFileName $file -Password "Password" -TargetPath $target
}
解释:
$zip
集合中包含的每个 FileInfo
对象都有一个 属性、BaseName
,这是不带扩展名的文件名。
Join-Path 用于将路径与子路径连接起来。此处的子路径将是每次迭代期间 $file
的 BaseName
值。
Test-Path is used to verify if a path already exists. If the $target
path does not exist, it will be created due to the New-Item命令。
获取目标文件夹路径的另一种方法是简单地使用正则表达式替换,这可能更有效:
$target = $file.FullName -replace '\.zip$'