在Windows中,您可以使用.zip一些文件
右键单击 - >发送到 - >压缩(zipped)文件夹
然后.zip双击.zip文件并解压缩文件.
有没有办法从脚本(.bat文件)应用这些功能,而无需安装任何第三方?
我知道这里有很多类似的问题,但我对答案(甚至是问题)都不满意.
主要目标是兼容性 - 它应该适用于最广泛的Windows机器(包括XP,Vista,Win2003 - 它们共同占据了大约20%的Windows共享),并且生成的文件应该可以在Unix/Mac机器上使用(所以标准存档/压缩格式是优选的).
选项有哪些:
我知道有用于处理ZIP文件的库.而且,您也可以使用Windows内置的功能来处理ZIP文件.
但是,我想知道是否有人研究过如何使用.NET中的System.IO.Compression命名空间内置的工具来读取/写入ZIP文件?或者,是否仅使用此命名空间是不可能的?
更新:我似乎有人评论System.IO.Packaging命名空间也可能对此有用.有谁知道到底该怎么做?
有没有办法在Windows中以编程方式创建压缩文件夹?我无法使用FileSystemObject看到这样做的方法(尽管有'Compressed'属性).
我已经看过zip dll了,但是如果可能的话,我宁愿避免重新发布一个dll.Windows XP本身就支持压缩文件夹.
我有以下结构的文件夹
folder子文件夹(空)子文件夹file1.bat file2.bat file3.bat
如何在不使用winrar或7zip等外部软件的情况下编写批处理文件来压缩上述文件夹的内容?
我尝试了下面的代码.但它会将内容复制到指定的临时文件夹而没有空文件夹,并且在尝试压缩文件夹时,它只会压缩file1和file2并忽略其余内容.
我希望能够在不影响结构的情况下压缩文件夹.
我找不到问题的原因.任何帮助表示赞赏.
set FILETOZIP=D:\OutputZipFiles\TestWorkDemo
set TEMPDIR=D:\OutputZipFiles\TempDir
rmdir %TEMPDIR%
mkdir %TEMPDIR%
xcopy /s %FILETOZIP% %TEMPDIR%
echo Set objArgs = WScript.Arguments > _zipIt.vbs
echo InputFolder = objArgs(0) >> _zipIt.vbs
echo ZipFile = objArgs(1) >> _zipIt.vbs
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> _zipIt.vbs
echo Set objShell = CreateObject("Shell.Application") >> _zipIt.vbs
echo Set source = objShell.NameSpace(InputFolder).Items >> _zipIt.vbs
echo objShell.NameSpace(ZipFile).CopyHere(source) >> _zipIt.vbs
echo wScript.Sleep 2000 >> _zipIt.vbs
CScript _zipIt.vbs %TEMPDIR% D:\OutputZipFiles\someArchive.zip
pause
Run Code Online (Sandbox Code Playgroud)