从PowerShell 5(2016年2月)开始,你可以使用 “Compress-Archive":
Compress-Archive -Path input.txt -DestinationPath output.zip
或者:
Compress-Archive input.txt output.zip
input.txt
这里也可以是一个目录
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.archive/compress-archive?view=powershell-5.1
想象一下,你想在不打开powershell窗口的情况下,在Command Prompt上压缩相同的文件夹:
powershell Compress-Archive . publish.zip
这里是另一个想法,来自4个不同的来源;不是我的想法,但我把它们整理出来,让它适合我
<!-- : Begin batch script
@each off
set sourceFolder="c:\test"
set destZip="%userprofile%\desktop\example.zip"
cscript //nologo "%~f0?.wsf" //job:exewsh %sourceFolder% %destZip%
exit /b
GOTO:EOF
----- Begin wsf script --->
<package><job id="exewsh"><script language="VBScript">
'Get command-line arguments.
Set objArgs = WScript.Arguments
InputFolder = objArgs(0)
ZipFile = objArgs(1)
'Create empty ZIP file.
CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" & Chr(5) & Chr(6) & String(18, vbNullChar)
Set objShell = CreateObject("Shell.Application")
Set source = objShell.NameSpace(InputFolder).Items
objShell.NameSpace(ZipFile).CopyHere(source)
'Required!
wScript.Sleep 2000
</script></job>
</package>
这里有一个很好的链接,显示了如何使用windows原生命令来压缩文件。 你能从命令提示符中只使用Windows的内置功能来压缩文件吗?
我用一个包含多个嵌套文件和文件夹的目录进行了测试,效果很好。
还有一种方法可以通过命令行解压文件,我也找到了这种方法。一种方法,就是打开一个资源管理器窗口,显示压缩后的文件内容。 Windows 7默认安装了命令行解压吗? https://stackoverflow.com/questions/1021557/how-to-unzip-a-file-using-the-command-line
这是个老问题了,但它的相关性仍然存在。
Windows当然有自己的压缩算法,用于使用ZIP文件,但是,与7ZIP开源产品相比,它的表现确实很差,在这里找到的7ZIP http://www.7- zip.org/
其他人已经讨论过使用windows内置功能的各种方法,我的解决方案需要安装额外的软件。"C:Program Files7-Zip7z.exe" –help
执行一个简单的添加到ZIP存档: “C:Program Files7-Zip7z.exe” a filename.zip c:path
在VBS中使用CopyHere()方法会带来几个问题。其中一个问题是,当复制过程在后台开始时,该方法会立即返回,而多次调用CopyHere()方法会相互干扰,导致ZIP无法正确创建。这里需要一个等待循环来解决这个问题。我的等待循环是基于这里发布的一个类似问题的答案。这是一个时间问题,因为当脚本在快速机器上执行时,新创建的ZIP文件被包含在Items集合中。
以下是我对windows内置的压缩和解压功能的总结 - https://stackoverflow.com/questions/28043589/how-can-i-compres-zip-and-uncopress-unzip-files-and-folders-with-batch-f
的几个解决方案,几乎每台windows机器上都可以使用。