Zip文件夹中的所有文件

问题描述 投票:1回答:1

我多年来一直使用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个拉链。我们甚至尝试重新安装它。程序运行完成且没有错误。

vba operating-system 7zip
1个回答
2
投票

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

我最近学到了这个,所以我想说明可以做出的改变。

  1. 如果您需要脚本将所有文件压缩为单个zip,则需要将“%CurrDirName%.zip”修改为“%% a.zip”
  2. 如果您需要脚本将所有内容压缩为一个,您可以将“%% a.zip”更改为“%CurrDirName%.zip
  3. 如果你需要提供一个简单的名称,你可以硬编码名称“Hardcoded.zip”
  4. 如果您只需要压缩某些文件类型,可以在set扩展名中添加它们
  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]
© www.soinside.com 2019 - 2024. All rights reserved.