压缩文件夹中的所有文件

Zip All Files in Folder

我多年来一直在使用 VBA 的片段将所有文件压缩到一个文件夹中。今天我们在同事的计算机上尝试了这个,代码似乎经历了它的迭代,但没有任何文件输出。唯一的区别是新机器是 32 位的,旧代码是 64 位的。 32 位文件不能与 VBA 一起使用有什么原因吗?

Sub ZipIndividualFiles1()
    Dim file As Variant

   Const source = "C:\Users\co01\Desktop\TEST"
   Const DEST = "C:\Users\co01\Desktop\Zipped"
   Const PATH_TO_7Z = "C:\Program Files-Zipz.exe"

   For Each file In CreateObject("Scripting.FileSystemObject").GetFolder(source).Files
      Shell PATH_TO_7Z & " a -tzip """ & DEST & "\" & file.Name &     ".zip"" """ & file.Path & """"
   Next
End Sub

7 zip 存在于 PATH_TO_7Z 路径中。我们甚至尝试重新安装它。程序运行完成,没有错误。

您好,我发现这段代码可以完成这项工作,您需要将它放在您需要压缩的文件夹中,只需 运行 即可,您可以另存为批处理文件,通过 VBA 执行.

我最近才了解到这一点,所以我想指出可以进行的更改。

  1. 如果您需要脚本将所有文件压缩为单独的 zip,那么您需要将“%CurrDirName%.zip”修改为“%%a.zip”

  2. 如果您需要脚本将所有内容压缩到一个文件中,您可以将“%%a.zip”更改为“%CurrDirName%.zip

  3. 如果您需要提供一个简单的名称,您可以在那里硬编码名称 "Hardcoded.zip"

  4. 如果您只需要压缩某些文件类型,您可以将它们添加到设置扩展名

  5. 如果你需要压缩排除某些文件类型你-x!*.bat,这里.bat是我排除的

希望对您有所帮助

@echo off
cd /d %~dp0
rem 7z.exe path
set sevenzip=
if "%sevenzip%"=="" if exist "%ProgramFiles(x86)%-zipz.exe" set sevenzip=%ProgramFiles(x86)%-zipz.exe
if "%sevenzip%"=="" if exist "%ProgramFiles%-zipz.exe" set sevenzip=%ProgramFiles%-zipz.exe
if "%sevenzip%"=="" echo 7-zip not found&pause&exit
for %%I in (.) do set CurrDirName=%%~nxI
set extension=.*
for %%a in (*%extension%) do "%sevenzip%" a "%CurrDirName%.zip" "%%a" -x!*.bat
pause
[/CODE]