Вот что я пытаюсь сделать,
Я хотел бы создать пакетный файл для сжатия нескольких папок и файлов в один файл 7zip для архивных целей.
У меня есть внешние диски, которые мы можем назвать [ИСХОДНЫЙ ДИСК] и [ДИСК НАЗНАЧЕНИЯ].
Файл и папки, которые я хочу сжать, находятся в корне [ИСХОДНОГО ДИСКА]. Я хотел бы добавить все эти папки и файл в один архив 7zip с назначенным именем [ИМЯ АРХИВА].
У меня установлен 7zip 64bit.
Вот что я пробовал;
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 мерцает, но, похоже, ничего не происходит, поскольку использование моего ЦП не меняется постоянно, как если бы я использовал графический интерфейс 7zip. Я считаю, что приглашение cmd мерцает, потому что оно запущено, но произошла синтаксическая ошибка.
В прошлом я использовал
for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"
для сжатия каждой папки в текущем каталоге, и, похоже, это работает хорошо.
Как я могу указать папки и файлы для включения в один архив с помощью пакета.
Любые советы будут с благодарностью.





C:\Program Files\7-Zip\7za пытается выполнить C:\Program. Вам нужно процитировать это "C:\Program Files\7-Zip\7za", как вы сделали в своем примере «Я использовал».
Возможно, следует обратить ваше внимание на переключатель -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\7-Zip\7z.exe" a -bd -tZip "%_Dst%" "%_Src%"
(
EndLocal
Exit /B
)
Я нашел способ получить дату в формате ISO, который не зависит от региона. также, поскольку у вас в системе другой формат даты / времени, чем у меня. Вы можете изменить его по своему усмотрению.
Кажется, я начинаю понимать, что Ты здесь сделал. Я либо пропустил это, либо это было исключено. Как добавить определенные файлы и папки в 1 архив. Для простоты я сократил свою партию до этой, и она работает. "C:\Program Files\7-Zip\7z.exe" a -pSECRET "[КОНЕЧНЫЙ ДИСК][ИМЯ АРХИВА].7z" "[ИСХОДНЫЙ ДИСК][ПЕРВАЯ ПАПКА]" -mhe=on -mx5 Я смотрю например, "C:\Program Files\7-Zip\7z.exe" a -pSECRET "[НАЧАЛЬНЫЙ ДИСК][ИМЯ АРХИВА].7z" "[ИСХОДНЫЙ ДИСК][ПЕРВАЯ ПАПКА]" "[ИСХОДНЫЙ ДИСК][ВТОРОЙ FOLDER]"-mhe=on -mx5 Где и как добавить несколько исходных путей в архив.
"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 не будет доступен для них в будущем.
Я бы порекомендовал вам всегда использовать кавычки вокруг имен файлов и каталогов и любых переданных строк аргументов/параметров.
Вы можете использовать текстовый файл, содержащий список исходных путей, как описано здесь.
Создайте list.txt с путями:
My programs\*.cpp
Src\*.cpp
Затем используйте этот файл в команде архива:
7z a archive.7z @list.txt
Спасибо за ваш ответ. Я изменил свою «строку» на «C:\Program Files\7-Zip\7z.exe» a -pSECRET «[НАЧАЛЬНЫЙ ДИСК][ИМЯ АРХИВА].7z» «[ИСХОДНЫЙ ДИСК][ПЕРВАЯ ПАПКА]» -mhe=on -mx5, который работает, и оказывается, что -mx5. Спасибо за ваш вклад. Мне любопытно, какой переключатель или синтаксис используется для выбора нескольких папок/файлов из одного каталога. Я не уверен, что моя терминология верна. В настоящее время (перед созданием этого пакета) пользователь должен выбрать несколько файлов/папок, удерживая клавишу Ctrl, затем с помощью контекстного меню 7zip добавить в архив и вручную настроить все остальное.