压缩文件夹中的所有文件
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 执行.
我最近才了解到这一点,所以我想指出可以进行的更改。
如果您需要脚本将所有文件压缩为单独的 zip,那么您需要将“%CurrDirName%.zip”修改为“%%a.zip”
如果您需要脚本将所有内容压缩到一个文件中,您可以将“%%a.zip”更改为“%CurrDirName%.zip
如果您需要提供一个简单的名称,您可以在那里硬编码名称 "Hardcoded.zip"
如果您只需要压缩某些文件类型,您可以将它们添加到设置扩展名
如果你需要压缩排除某些文件类型你-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]
我多年来一直在使用 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 执行.
我最近才了解到这一点,所以我想指出可以进行的更改。
如果您需要脚本将所有文件压缩为单独的 zip,那么您需要将“%CurrDirName%.zip”修改为“%%a.zip”
如果您需要脚本将所有内容压缩到一个文件中,您可以将“%%a.zip”更改为“%CurrDirName%.zip
如果您需要提供一个简单的名称,您可以在那里硬编码名称 "Hardcoded.zip"
如果您只需要压缩某些文件类型,您可以将它们添加到设置扩展名
如果你需要压缩排除某些文件类型你-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]