Zip文件夹中的所有文件

时间:2015-03-13 15:41:46

标签: vba operating-system 7zip

我多年来一直使用VBA片段来压缩文件夹中的所有文件。今天我们在co worker计算机上尝试了这个,代码似乎经历了迭代,但没有任何文件输出。唯一的区别是新机器是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\7-Zip\7z.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

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

1 个答案:

答案 0 :(得分:2)

嗨,我发现此代码可以完成这项工作,您需要将其放置在需要压缩的文件夹中,然后运行它,并且可以通过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)%\7-zip\7z.exe" set sevenzip=%ProgramFiles(x86)%\7-zip\7z.exe
if "%sevenzip%"=="" if exist "%ProgramFiles%\7-zip\7z.exe" set sevenzip=%ProgramFiles%\7-zip\7z.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]