У меня есть скрипт ниже, который работает отлично, все, что мне нужно, это добавить пароль и шифрование при сжатии. Есть идеи, куда мне поместить команду -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%\*.*"

1 ответ1

2

Для вас было бы проще, если бы пакетный файл был правильно отформатирован. Последняя строка этого командного файла отвечает за выполнение командной строки 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%\*.*"

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

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .