如何使用批处理将多个文件和文件夹添加到单个 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
这是我想要做的,
我想创建一个批处理文件,将多个文件夹和文件压缩成一个 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