这就是我想要做的,
我想创建一个批处理文件以将多个文件夹和文件压缩为一个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\"
压缩当前目录中的每个文件夹,并且接缝可以正常工作。
如何使用批处理指定要包含在一个存档中的文件夹和文件。
任何提示将不胜感激。
答案 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