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

How to add Multiple Files & Folders to a single 7zip archive using batch

这是我想要做的,

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

我有外部驱动器,我们可以称之为 [源磁盘] 和 [目标磁盘]。

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

我安装了 7zip 64 位。

这是我试过的;

C:\Program Files-Zipza 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-Zipza 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-Zipza a -tzip "[DESTINATION DISK]\[ARCHIVE NAME].zip" "[SOURCE DISK]\[FIRST FOLDER]" -mx5

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

c:\Program Files-Zipz.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-Zipz.exe" a "%%X.7z" "%%X\"

压缩当前目录中的每个文件夹,并且效果很好。

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

任何提示将不胜感激。

C:\Program Files-Zipza 尝试执行 C:\Program。您需要像在 "I've used" 示例中那样引用它 "C:\Program Files-Zipza"

可能应该提请您注意 -r 开关以递归存档 - 我相信所有开关(如 -mx5)都应该出现在存档文件名之前,否则它会假设-mx5 是要存档的文件名。

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

@(
  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-Zipz.exe" a -bd -tZip "%_Dst%" "%_Src%"

(
  EndLocal
  Exit /B
)

我提出了一种将日期转换为与区域无关的 ISO 格式的方法。另外,由于您的系统上有不同的 date/time 格式,所以我会这样做。你可以随意改变它。

"C:\Program Files-Zipz.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

我明白了。感谢您的支持!经过大量阅读和反复试验,我意识到如果源路径或目标路径包含 space:需要引号。如果没有 space: 不包含引号。请参见上面的示例。希望这对以后的其他人有帮助。

不要混淆,但我添加了密码并在输入密码前隐藏了文件名。我确实知道密码将在 .bat 中,但这些档案将被转移到其他机器上,以后将无法使用 .bat。

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

创建 list.txt 路径:

My programs\*.cpp
Src\*.cpp

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

7z a archive.7z @list.txt