如何创建压缩文件夹的批处理作业(.bat)?

如何创建压缩文件夹的批处理作业(.bat)?

我从 7zip 下载了他们的命令行工具 7za.exe,并且我必须遵循脚本:

echo off

cls

set zip ="C:\7za.exe"

set filename="%date%.backup.zip"

set pathtobackup="C:\MyDocs"

%zip% -t7z %filename% %pathtobackup%\*.doc

我的目的是备份 MyDocs 文件夹中的所有文档文件(包括子文件夹),并将它们放在一个有日期的 zip 文件中。之后,我将使用 robocopy 将此文件移动到我的服务器,但目前我在压缩文件时遇到了一些问题。

有人知道吗?我也可以给文件附加密码吗?

答案1

使用语法

7z a -tzip archive.zip -r src\*.cpp src\*.h

所以对于你来说,应该是

7z a -t7z %filename% -r %pathtobackup%\*.doc

来源:http://sevenzip.sourceforge.jp/chm/cmdline/switches/recurse.htm

答案2

安装 7z 后,您可以使用此工作示例和删除脚本来删除超过 7 天的文件。此脚本的作用是将文件从给定的“输入”文件夹压缩到“输出”文件夹。要压缩文件夹,您必须添加 /d;要压缩文件夹内的所有文件,只需修改最后一个“%%X”。

REM This is a batch script to zip files in folder or add /d to zip folders.
REM This script is using 7z to zip files, installation is required - "[http://www.7-zip.org/a/7z938-x64.msi][1]"
REM Remember to point 'do' to 7z installed path 7z.exe

SET input1=D:\Backup\SampleFolder
SET input2=D:\Backup\SampleFolder2

SET output1=C:\ZipBackups\SampleFolder
SET output2=C:\ZipBackups\SampleFolder2

CD /d %input1%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output1%\%%X.zip" "%%X"
FORFILES /P "%input1%" /M *.* /D -8 /C "cmd /c del @file"

CD /d %input2%
for %%X in (*) do "C:\Program Files\7-Zip\7z.exe" a "%output2%\%%X.zip" "%%X"
FORFILES /P "%input2%" /M *.* /D -8 /C "cmd /c del @file"

答案3

我找到了一个简单的解决方案。假设您有多个子文件夹需要压缩到一个文件夹中。在这种情况下,1. 下载并安装 7zip 软件。然后将 7z.exe 复制到您想要压缩子文件夹的特定文件夹中。

在记事本中,复制并粘贴以下内容并保存为.bat 文件。:

cd "your_Folder_path" for /d %%f in (*) do (7z a -t7z %%f.7z "your_Folder_path\%%f")

双击运行该文件。

如果您想删除原始文件夹,请在右括号前添加以下内容:

rd /s /q "your_Folder_path\%%f"

答案4

set hour=%time:~0,2%
if "%hour:~0,1%" == " " set hour=0%hour:~1,1%
echo hour=%hour%
set min=%time:~3,2%
if "%min:~0,1%" == " " set min=0%min:~1,1%
echo min=%min%
set secs=%time:~6,2%
if "%secs:~0,1%" == " " set secs=0%secs:~1,1%
echo secs=%secs%

set year=%date:~-4%
echo year=%year%
set month=%date:~3,2%
if "%month:~0,1%" == " " set month=0%month:~1,1%
echo month=%month%
set day=%date:~0,2%
if "%day:~0,1%" == " " set day=0%day:~1,1%
echo day=%day%

set datetimef=%day%_%month%_%year%___%hour%_%min%_%secs%

echo datetimef=%datetimef%


path %path%;"C:\Program Files\7-Zip"

相关内容