Как добавить несколько файлов и папок в один архив 7zip, используя пакет

Вот что я пытаюсь сделать,

Я хотел бы создать пакетный файл для сжатия нескольких папок и файлов в один файл 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\"

для сжатия каждой папки в текущем каталоге, и, похоже, это работает хорошо.

Как я могу указать папки и файлы для включения в один архив с помощью пакета.

Любые советы будут с благодарностью.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
6 198
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

C:\Program Files\7-Zip\7za пытается выполнить C:\Program. Вам нужно процитировать это "C:\Program Files\7-Zip\7za", как вы сделали в своем примере «Я использовал».

Возможно, следует обратить ваше внимание на переключатель -r для рекурсивного архивирования - и я считаю, что все переключатели (например, -mx5) должны стоять перед именем файла архива, иначе будет считаться, что -mx5 - это имя файла для архивирования.

Спасибо за ваш ответ. Я изменил свою «строку» на «C:\Program Files\7-Zip\7z.exe» a -pSECRET «[НАЧАЛЬНЫЙ ДИСК][ИМЯ АРХИВА].7z» «[ИСХОДНЫЙ ДИСК][ПЕРВАЯ ПАПКА]» -mhe=on -mx5, который работает, и оказывается, что -mx5. Спасибо за ваш вклад. Мне любопытно, какой переключатель или синтаксис используется для выбора нескольких папок/файлов из одного каталога. Я не уверен, что моя терминология верна. В настоящее время (перед созданием этого пакета) пользователь должен выбрать несколько файлов/папок, удерживая клавишу Ctrl, затем с помощью контекстного меню 7zip добавить в архив и вручную настроить все остальное.

Kenny 10.07.2019 16:35

Вам просто нужно указать правильные параметры и убедиться, что все ваши пути указаны в кавычках.

@(
  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 Где и как добавить несколько исходных путей в архив.

Kenny 10.07.2019 15:42
Ответ принят как подходящий
"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 не будет доступен для них в будущем.

Я бы порекомендовал вам всегда использовать кавычки вокруг имен файлов и каталогов и любых переданных строк аргументов/параметров.

Compo 10.07.2019 23:39

Вы можете использовать текстовый файл, содержащий список исходных путей, как описано здесь.

Создайте list.txt с путями:

My programs\*.cpp
Src\*.cpp

Затем используйте этот файл в команде архива:

7z a archive.7z @list.txt

Другие вопросы по теме