BlueGene Asked: 2009-06-04 07:57:09 +0800 CST2009-06-04 07:57:09 +0800 CST 2009-06-04 07:57:09 +0800 CST 如何在 Powershell 中压缩/解压缩文件? 772 是否有一种可以在 PowerShell 中压缩/解压缩文件 (*.zip) 的单行程序? powershell command-line-interface compression 11 个回答 Voted Ameer Deen 2010-11-14T17:36:43+08:002010-11-14T17:36:43+08:00 这就是你可以在没有任何外部工具的情况下完全从 Powershell 中完成它的方法。这会将名为 test.zip 的文件解压缩到当前工作目录: $shell_app=new-object -com shell.application $filename = "test.zip" $zip_file = $shell_app.namespace((Get-Location).Path + "\$filename") $destination = $shell_app.namespace((Get-Location).Path) $destination.Copyhere($zip_file.items()) mousio 2012-12-31T09:46:38+08:002012-12-31T09:46:38+08:00 现在在 .NET Framework 4.5 中,有一个ZipFile类,您可以像这样使用它: [System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem') [System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder) Best Answer Kevin Kuphal 2009-06-04T08:02:35+08:002009-06-04T08:02:35+08:00 DotNetZip将允许您从 PowerShell 执行此操作。它不是单行的,但该库将允许您编写所需的 PowerShell 脚本。 您还可以使用 COM 接口,请参阅Compress Files with Windows PowerShell then package a Windows Vista Sidebar Gadget。 谷歌搜索“zip powershell”或“unzip powershell”也可能会得到有用的结果。 Windos 2015-10-18T12:59:07+08:002015-10-18T12:59:07+08:00 我知道这是一个非常古老的问题,但我刚刚在 Twitter 上看到它链接,我想我会发布一个当前的答案。 PowerShell 5 目前可在 Windows 10 上或通过Windows Management Framework 5 Production Preview获得,它带有两个用于“压缩”和“解压缩”的内置 cmdlet: 压缩存档 展开-存档 Kevin Colby 2009-06-04T07:59:54+08:002009-06-04T07:59:54+08:00 您可能希望查看具有专门为此的 cmdlet的 PowerShell 社区扩展 (PSCX) 。 Brian Reiter 2009-08-04T11:40:29+08:002009-08-04T11:40:29+08:00 我找到了最简单的解决方案,即只使用我多年来使用并在 UNIX 环境中使用的 infozip 二进制文件。 PS> zip -9r ../test.zip * PS> cd .. PS> unzip -t test.zip Archive: test.zip testing: LinqRepository/ OK testing: LinqRepository/ApplicationService.cs OK testing: LinqRepository/bin/ OK ... No errors detected in compressed data of test.zip. 在文本输出周围放置一个 powershell 包装器会很简单,但实际上我从来不需要它,所以我没有打扰。 http://www.info-zip.org/ Nathan Hartley 2011-08-12T07:07:40+08:002011-08-12T07:07:40+08:00 我也喜欢Info-ZIP(大多数其他 Zip 实用程序中的 Zip 引擎)和7-Zip,这是另一个具有 GUI 和命令行 Zip 实用程序的最爱。重点是,有一些很好的命令行实用程序适用于大多数 PowerShell 任务。 运行命令行实用程序有一些技巧,这些技巧不是使用 PowerShell 构建的: 运行名称中以数字开头的可执行文件,在其前面加上与号 (&)。 &7zip.exe 将实用程序希望从命令行看到的每个标记用引号括起来。 &"c:\path with space\SomeCommand.exe" "/parameter2" "/parameter2" "parameter2's Value" "Value2 `" with a quote" 尝试这个: zip filename.zip (Get-ChildItem somepath\*) 甚至: zip filename.zip (Get-Content ListOfFiles.txt) Nico 2013-10-12T09:56:57+08:002013-10-12T09:56:57+08:00 詹姆斯霍尔威尔我喜欢你的回答,但我扩大了一点 # Example #unzip "myZip.zip" "C:\Users\me\Desktop" "c:\mylocation" function unzip($fileName, $sourcePath, $destinationPath) { $shell = new-object -com shell.application if (!(Test-Path "$sourcePath\$fileName")) { throw "$sourcePath\$fileName does not exist" } New-Item -ItemType Directory -Force -Path $destinationPath -WarningAction SilentlyContinue $shell.namespace($destinationPath).copyhere($shell.namespace("$sourcePath\$fileName").items()) } adopilot 2009-08-04T11:49:02+08:002009-08-04T11:49:02+08:00 WinRAR可以在 CMD 模式下工作,接受参数 Jonesome Reinstate Monica 2015-01-14T14:53:48+08:002015-01-14T14:53:48+08:00 离子方法摇滚: https://dotnetzip.codeplex.com/wikipage?title=PS-Examples 支持密码,其他加密方法等。
这就是你可以在没有任何外部工具的情况下完全从 Powershell 中完成它的方法。这会将名为 test.zip 的文件解压缩到当前工作目录:
现在在 .NET Framework 4.5 中,有一个ZipFile类,您可以像这样使用它:
DotNetZip将允许您从 PowerShell 执行此操作。它不是单行的,但该库将允许您编写所需的 PowerShell 脚本。
您还可以使用 COM 接口,请参阅Compress Files with Windows PowerShell then package a Windows Vista Sidebar Gadget。
谷歌搜索“zip powershell”或“unzip powershell”也可能会得到有用的结果。
我知道这是一个非常古老的问题,但我刚刚在 Twitter 上看到它链接,我想我会发布一个当前的答案。
PowerShell 5 目前可在 Windows 10 上或通过Windows Management Framework 5 Production Preview获得,它带有两个用于“压缩”和“解压缩”的内置 cmdlet:
您可能希望查看具有专门为此的 cmdlet的 PowerShell 社区扩展 (PSCX) 。
我找到了最简单的解决方案,即只使用我多年来使用并在 UNIX 环境中使用的 infozip 二进制文件。
在文本输出周围放置一个 powershell 包装器会很简单,但实际上我从来不需要它,所以我没有打扰。
http://www.info-zip.org/
我也喜欢Info-ZIP(大多数其他 Zip 实用程序中的 Zip 引擎)和7-Zip,这是另一个具有 GUI 和命令行 Zip 实用程序的最爱。重点是,有一些很好的命令行实用程序适用于大多数 PowerShell 任务。
运行命令行实用程序有一些技巧,这些技巧不是使用 PowerShell 构建的:
运行名称中以数字开头的可执行文件,在其前面加上与号 (&)。
&7zip.exe
将实用程序希望从命令行看到的每个标记用引号括起来。
&"c:\path with space\SomeCommand.exe" "/parameter2" "/parameter2" "parameter2's Value" "Value2 `" with a quote"
尝试这个:
甚至:
詹姆斯霍尔威尔我喜欢你的回答,但我扩大了一点
WinRAR可以在 CMD 模式下工作,接受参数
离子方法摇滚:
https://dotnetzip.codeplex.com/wikipage?title=PS-Examples
支持密码,其他加密方法等。