如何使用批处理将多个文件和文件夹添加到单个7zip存档

时间:2019-07-09 20:34:54

标签: batch-file compression 7zip

这就是我想要做的,

我想创建一个批处理文件以将多个文件夹和文件压缩为一个7zip文件,以用于存档。

我有外部驱动器,可以调用[SOURCE DISK]和[DESTINATION DISK]。

我要压缩的文件和文件夹位于[SOURCE DISK]的根目录中。我想将所有这些文件夹和文件添加到具有指定名称[ARCHIVE NAME]的单个7zip存档中。

我安装了7zip 64位。

这是我尝试过的;

C:\Program Files\7-Zip\7za a -tzip "[DESTINATION DISK]\[ARCHIVE NAME] %DATE:~12,2%%DATE:~4,2%%DATE:~7,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.zip" "[SOURCE DISK]\[FIRST FOLDER], [SOURCE DISK]\[SECOND FOLDER], [SOURCE DISK]\[THIRD FOLDER], [SOURCE DISK]\[AN EXCEL DOCUMENT]" -mx5

C:\Program Files\7-Zip\7za a -tzip "[DESTINATION DISK]\[ARCHIVE NAME].zip" "[SOURCE DISK]\[FIRST FOLDER], [SOURCE DISK]\[SECOND FOLDER], [SOURCE DISK]\[THIRD FOLDER], [SOURCE DISK]\[AN EXCEL DOCUMENT]" -mx5

C:\Program Files\7-Zip\7za a -tzip "[DESTINATION DISK]\[ARCHIVE NAME].zip" "[SOURCE DISK]\[FIRST FOLDER]" -mx5

c:\Program Files\7-Zip\7z.exe a -tzip "[DESTINATION DISK]\[ARCHIVE NAME].zip" "[SOURCE DISK]\[FIRST FOLDER]" -mx5

c:\Program Files\7-Zip\7z.exe a -tzip "[DESTINATION DISK]\[ARCHIVE NAME].7z" "[SOURCE DISK]\[FIRST FOLDER]" -mx5

我是7zip命令行的新手。我确定我错过了一些关键的东西。当我手动执行批处理文件时,一个cmd提示会闪烁,但它并没有发生任何变化,因为我的CPU使用率并没有像使用7zip GUI那样稳定地变化。我相信cmd提示符会闪烁,因为它已启动,但是存在语法错误。

过去我曾经用过

for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"

压缩当前目录中的每个文件夹,并且接缝可以正常工作。

如何使用批处理指定要包含在一个存档中的文件夹和文件。

任何提示将不胜感激。

4 个答案:

答案 0 :(得分:0)

C:\Program Files\7-Zip\7za尝试执行C:\Program。您需要像在“我已经用过”示例中一样,引用"C:\Program Files\7-Zip\7za"

可能应该引起您对-r开关的注意,以递归归档-并且我相信所有开关(例如-mx5)都应出现在存档文件名之前,否则它将假定{ {1}}是要归档的文件名。

答案 1 :(得分:0)

您只需要指定正确的选项,并确保所有路径都被引用

@(
  SetLocal
  Echo Off
  SET "_Src="C:\Source\Path"
)

REM Get The Date Tokens and Time in ISO Format:

FOR /F "Tokens=1-7 delims=MTWFSmtwfsouehrandit:-\/. " %%A IN (
  "%DATE% %TIME: =0%"
) DO (
  FOR /F "Tokens=2-4 Skip=1 Delims=(-)" %%a IN ('
    ECHO.^| DATE
  ') DO (
    SET "%%~a=%%~A"
    SET "%%~b=%%~B"
    SET "%%~c=%%~C"
    SET "IsoTime=%%~D.%%~E.%%~F.%%~G"
  )
)

REM Set Archive Filename with Date:
SET "_Dst="D:\Destination\Path\ARCHIVE_NAME_%yy%-%mm%-%dd%_%IsoTime%.zip"

REM Run 7Zip Command:
"C:\Program Files\7-Zip\7z.exe" a -bd -tZip "%_Dst%" "%_Src%"

(
  EndLocal
  Exit /B
)

我想出一种方法来将日期转换为与区域无关的ISO格式。以及由于您的系统上的日期/时间格式不同,所以我也要这样做。您可以随意更改它。

答案 2 :(得分:0)

"C:\Program Files\7-Zip\7z.exe" a -pSECRET "[DESTINATION DISK]\[ARCHIVE NAME] %DATE:~10,4%%DATE:~4,2%%DATE:~7,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%.7z" "[SOURCE DISK][FIRST FOLDER]" [SOURCE DISK][SECONDFOLDER] "[SOURCE DISK]\[EXCEL DOCUMENT]" -mhe=on -mx5

我知道了。感谢您的支持!经过一番阅读和反复试验后,我意识到源或目标的路径中是否包含空格:需要使用引号。如果没有空格,请不要添加引号。请参阅上面的示例。希望这对将来有帮助。

不要混淆,但是我添加了密码,并且在输入密码之前隐藏了文件名。我确实知道该密码将位于.bat中,但是这些存档将被转移到其他计算机上,将来这些.bat将不再可用。

答案 3 :(得分:0)

您可以使用包含here中所述的包含源路径列表的文本文件。

使用路径创建list.txt

My programs\*.cpp
Src\*.cpp

然后在归档命令中使用此文件:

7z a archive.7z @list.txt