Как добавить команду пароля в файл zip bat

680
T.j

У меня есть скрипт ниже, который работает отлично, все, что мне нужно, это добавить пароль и шифрование при сжатии. Есть идеи, куда мне поместить -p команду, чтобы она заработала? Я пытался, но это не работает для меня.

@echo off setlocal enabledelayedexpansion  REM Define file and folder locations set BaseDir=D:\SourceTest set DestZip=D:\Destinationtest\BACKUP.zip set SevenZip=C:\Program Files\7-Zip\7z.exe  REM Zip all files and folders echo Getting time ... for /f "tokens=1-9" %%a in ('wmic.exe Path Win32_LocalTime Get Day^,DayOfWeek^,Hour^,Minute^,Month^,Quarter^,Second^,WeekInMonth^,Year ^| find /v ""') do ( set /a Line += 1 if "!Line!"=="1" (set VarA=%%a&set VarB=%%b&set VarC=%%c&set VarD=%%d&set VarE=%%e&set VarF=%%f&set VarG=%%g&set VarH=%%h&set VarI=%%i) if "!Line!"=="2" (set !VarA!=%%a&set !VarB!=%%b&set !VarC!=%%c&set !VarD!=%%d&set !VarE!=%%e&set !VarF!=%%f&set !VarG!=%%g&set !VarH!=%%h&set !VarI!=%%i) ) for %%a in (Month Day Hour Minute Second) do (if !%%a! LSS 10 set %%a=0!%%a!) set TimeStamp=%Year%%Month%%Day%_%Hour%%Minute%%Second%  echo Compressing '%BaseDir%' ... for %%a in ("%DestZip%") do (set DestZip=%%~dpna-%TimeStamp%%%~xa) "%SevenZip%" a -tzip "%DestZip%" -r "%BaseDir%\*.*" 
0

1 ответ на вопрос

2
Sandeep

Для вас было бы проще, если бы пакетный файл был правильно отформатирован. Последняя строка этого командного файла отвечает за выполнение 7zкомандной строки. Это точка, где вы можете добавить -pопцию.

"%SevenZip%" a -pYourPassword -tzip "%DestZip%" -r "%BaseDir%\*.*" 

Я также отформатировал файл

@echo off  setlocal enabledelayedexpansion  REM Define file and folder locations  set BaseDir=D:\SourceTest  set DestZip=D:\Destinationtest\BACKUP.zip  set SevenZip=C:\Program Files\7-Zip\7z.exe  REM Zip all files and folders echo Getting time ...  for /f "tokens=1-9" %%a in ('wmic.exe Path Win32_LocalTime Get Day^,DayOfWeek^,Hour^,Minute^,Month^,Quarter^,Second^,WeekInMonth^,Year ^| find /v ""') do ( set /a Line += 1 if "!Line!"=="1" ( set VarA=%%a&set VarB=%%b&set VarC=%%c&set VarD=%%d&set VarE=%%e&set VarF=%%f&set VarG=%%g&set VarH=%%h&set VarI=%%i )  if "!Line!"=="2" ( set !VarA!=%%a&set !VarB!=%%b&set !VarC!=%%c&set !VarD!=%%d&set !VarE!=%%e&set !VarF!=%%f&set !VarG!=%%g&set !VarH!=%%h&set !VarI!=%%i )  ) for %%a in (Month Day Hour Minute Second) do ( if !%%a! LSS 10 set %%a=0!%%a! )  set TimeStamp=%Year%%Month%%Day%_%Hour%%Minute%%Second% echo Compressing '%BaseDir%' ...  for %%a in ("%DestZip%") do ( set DestZip=%%~dpna-%TimeStamp%%%~xa )  "%SevenZip%" a -pPassword@1 -tzip "%DestZip%" -r "%BaseDir%\*.*" 

Когда я пытаюсь извлечь выходной файл, он запрашивает пароль:

enter image description here

Чтобы зашифровать имя файла, вам нужно добавить -mhe=onопцию для шифрования заголовка файла. Но эта опция не работает с zipформатом. Чтобы он работал для 7zформата, внесите следующие изменения:

изменить имя целевого файла

set DestZip=D:\Destinationtest\BACKUP.7z 

Редактировать последнюю строку

"%SevenZip%" a -mhe=on -pYourPassword "%DestZip%" -r "%BaseDir%\*.*" 

После этих изменений он будет запрашивать пароль каждый раз.

Я уже добавил '-p' в свой скрипт, но файл результатов не защищен паролем. Кажется, команда '-p' не работает, или я что-то здесь упускаю. Я также попытался отформатировать и сохранить как новый файл .bat. ПО запустит свой сканирующий диск и выдаст ошибку доступа, запрещенную именно на этом https://paste.ubuntu.com/p/TbymKfbfQk/ T.j 5 лет назад 0
@ Я вижу, почему вы получаете ошибку. Я обновил код (последняя строка). Также, когда я пытаюсь извлечь выходной файл, он спрашивает пароль. Я использую версию `7zip 18 (x64)`. Sandeep 5 лет назад 0
Черт, все, что я делаю, это пытаюсь открыть, и он показывает файлы в ZIP-архиве, который работает, и запрашивает пропуск, когда я его извлекаю. Иногда небольшие ошибки заставляют вас работать как в аду. Спасибо, приятель, ура. PS Имена файлов видны, но не извлекаются, пока вы не введете пароль, есть ли способ скрыть имена файлов T.j 5 лет назад 0
Да, у 7zip есть опция шифрования имен файлов, но она не работает с форматом `zip`. Для формата `7z` вы можете установить имя файла резервной копии как` BACKUP.7z` и обновить последнюю строку как `"% SevenZip% "a -mhe = on -pPassword @ 1"% DestZip% "-r"% BaseDir% \ *. * "` Sandeep 5 лет назад 0