Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532

Ввод символов пароля для 7-Zip в cmd

11.02.2025, 21:38. Показов 4418. Ответов 40

Студворк — интернет-сервис помощи студентам
Всем привет.
Сделал скрипт бекапа папки в File.7z, поставив пароль прямо в батник ключом -p, но ключ как-то небезопасно выглядит, когда он в открытом виде

Возможно как-то вывести в процессе работы батника запрос ввода пароля?
Ну т.е. примерно вижу это так:
1. Запускаю батник.
2. Доходит дело до строки с архивацией.
3. CMD выводит сообщение "Создайте пароль для архива".
4. Ввожу желаемый пароль. Жму энтэр для продолжения.
5. Ввожу повторно пароль, чтобы не было ошибки. Жму энтер для продолжения и начинается архивация.
6. Желательно, в общем и логично, чтобы вводимый пароль писался как **** или как-то по-другому, но чтобы символы при вводе не были видны

Возможно такое в батнике?
В общем, заменить нужно -p123456789 на что-то наверное вроде -p%variable%.

Windows Batch file
1
%zip_app% a %zip_argum1% -p123456789 "%arch_destdir1%\%arch_name1%" "%arch_sourcedir1%\"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.02.2025, 21:38
Ответы с готовыми решениями:

Ввод пароля на запрос Jacarta через cmd
Добрый день, столкнулся с проблемой, нужно для развертывания ОС сделать bat или cmd который будет прописывать контейнеры для Jacarta суть...

Ввод пароля (замена вводимых символов на экране символом '*')
Как можно реализовать слепой ввод на языке ассемблера? То есть при вводе строки она отображалась в консоли звёздочками, но записывалась в...

Написать программу для перебора пароля на zip или rar архивах
Нужно написать программу для перебора пароля на зип или рар архивах. Как это написать, какие библиотеки и всевозможные .dll придется...

40
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
17.02.2025, 23:08
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Vasek2 Посмотреть сообщение
добить через batch
добить можно, но извращенно и с ограничениями - ввод только букв и цифр, при этом одним символом придётся пожертвовать в пользу клавиши завершения ввода (в моём примере - 0)

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
@echo off
chcp 65001> nul
setlocal EnableDelayedExpansion
 
:input_pass
@echo off
chcp 65001> nul
setlocal EnableDelayedExpansion
 
:input_pass
echo.Введите пароль
call :paranoid_pass pass1
 
echo.Повторите пароль
call :paranoid_pass pass2
 
if not "%pass1%"=="%pass2%" echo.Пароли не совпадают & goto :input_pass
%zip_app% a %zip_argum1% -p%pass1% "%arch_destdir1%\%arch_name1%" "%arch_sourcedir1%\"
 
exit /b
 
:paranoid_pass
    if not defined CHARS set "CHARS=Q W E R T Y U I O P A S D F G H J K L Z X C V B N M 1 2 3 4 5 6 7 8 9"
    if not defined BRCHAR set "BRCHAR=0"
    if not defined CHCHARS set "CHCHARS=%BRCHAR%%CHARS: =%"
    set "_pass="
 
    :_pp_loop
        choice /c "%CHCHARS%" > nul
        set err=%ERRORLEVEL%
        if %err%==1 (
            set "%~1=%_pass%"
            goto :eof
        )
 
        set _i=2
        for %%c in (%CHARS%) do (
            if "!_i!"=="%err%" set "_pass=!_pass!%%c" & goto :_pp_loop
            set /a _i+=1
        )
    goto :_pp_loop
goto :eof
1
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
18.02.2025, 17:13  [ТС]
nekit270, привет, я забыл отписаться.

На гитхабе юзер предложил изменения в исходниках:
https://github.com/ip7z/7zip/pull/90

Из минусов - компиляция + я не тестил ещё.
Но если сработает, то это бескостыльный метод
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
19.02.2025, 21:12
Vasek2, ANSI-шный вариантец на тест:

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!-- :: Тут начало батника:
 
@echo off&chcp 1251>nul
for /f %%s in ('mshta %0') do set "pass=%%s"
if not defined pass exit
echo 7z.exe a ... -p%pass% ...
pause
goto:eof
 
:: тут конец -->
 
<meta charSet=Windows-1251>
<style> *{background-color:black; color:silver}; body{margin:0; padding:0} </style>
<script>
self.moveTo(Math.round(screen.width/2-160),Math.round(screen.height/2-75))
self.resizeTo(320,150)
 
function checkEnter() { if(event.keyCode == 13) checkPassw() }
 
function checkPassw() {
   if (pass1.value == '' || pass2.value == '') return
   if (pass1.value == pass2.value) {
      try { new ActiveXObject('Scripting.FileSystemObject').getStandardStream(1).write(pass1.value) }
      catch(err){}; close()
   } else {
    pass1.focus()
      pass1.value = ''; pass2.value = ''
      text.style.color = 'LightCoral'
   }
}
</script>
</head>
<HTA:APPLICATION Caption=no Border=none Scroll=no InnerBorder=no SingleInstance=yes/>
<body style="font-size=12; margin-left:10" onLoad=pass1.focus()>
<input type=password name=pass1 style="padding:4px; width=300; margin-top:10; font-size:16; height:34px" onkeydown=checkEnter()>
<p style="margin-top:0; margin-bottom:0">Повторить:&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<span id=text style="color:black">Пароли не совпали!</span></p>
<input type=password name=pass2 style="padding:4px; width=300; margin-top:2; margin-bottom:10; font-size:16; height:34px" onkeydown=checkEnter()>
<input type=button style="width:200; margin-bottom:10" value="Подтвердить  [=Enter=]" onclick=checkPassw()>
1
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
20.02.2025, 00:47  [ТС]
FlasherX, для 866-го батничка, как всегда

Днём потестю. А вообще уже собирался компилировать 7-Zip
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
20.02.2025, 08:18
Vasek2, а у твоего батника есть какие-то проблемы с ANSI? Просто с этим OEM как всегда порция лишнего гемора и доработок.

Ну на тебе 866:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<!-- :: Тут начало батника:
 
@echo off
for /f %%s in ('mshta %0') do set "pass=%%s"
if not defined pass exit
echo 7z.exe a ... -p%pass% ...
pause
goto:eof
 
:: тут конец -->
 
<meta charSet=Windows-1251>
<style>body{margin:0;padding:0}</style>
<script>
self.moveTo(Math.round(screen.width/2-160),Math.round(screen.height/2-75))
self.resizeTo(320,150)
 
function checkEnter() { if(event.keyCode == 13) checkPassw() }
 
function checkPassw() {
   if (pass1.value == '' || pass2.value == '') return
   if (pass1.value == pass2.value) {
      with(new ActiveXObject('ADODB.Stream')) {
         open; charset = 'cp866'
         writeText(pass1.value + '\r'); position = 0
         charset = 'unicode'; pass = readText; close()
      }
      try { new ActiveXObject('Scripting.FileSystemObject').getStandardStream(1,1).write(pass) }
      catch(err){}; close()
   } else {
      pass1.focus()
      pass1.value = ''; pass2.value = ''
      text.style.color = 'LightCoral'
   }
}
</script>
 
<HTA:APPLICATION Caption=no Border=none Scroll=no InnerBorder=no SingleInstance=yes/>
<body bgcolor=black style="color=silver; font-size=12; margin-left:10" onLoad=pass1.focus()>
<input type=password name=pass1 style="padding:4px; background-color:black; width=300; color:silver; margin-top:10; font-size:16; height:34px" onkeydown=checkEnter()>
<p style="margin-top:0; margin-bottom:0">Повторит&#1100:&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<span id=text style="color:black">Пароли н&#1077 совпал&#1080!</span></p>
<input type=password name="pass2" style="padding:4px; background-color:black; color:silver; width=300; margin-top:2; margin-bottom:10; font-size:16; height:34px" onkeydown=checkEnter()>
<input style="background-color:black; color:silver; width:200; margin-bottom:10" type=button value="Подтвердит&#1100  [=Enter=]" onclick=checkPassw()>
0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
20.02.2025, 08:27  [ТС]
FlasherX, скрин снизу. Я в т.ч. в новом батнике это всё сделал. Кодировки были 866, 1251 и 65001
Миниатюры
Ввод символов пароля для 7-Zip в cmd  
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
20.02.2025, 08:46
Не-не. Шапка должна быть со всеми её учётами. Выпиливать её как раз нельзя.
Под себя ты можешь менять только пару строк:
Windows Batch file
6
7
echo 7z.exe a ... -p%pass% ...
pause
Кодировка должна быть та, которая указана, и больше никакая.
0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
20.02.2025, 09:05  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
а у твоего батника есть какие-то проблемы с ANSI? Просто с этим OEM как всегда порция лишнего гемора и доработок.
Я всё же запарился сейчас и вот 3 скрина. Один и тот же батник в разных системах.
Миниатюры
Ввод символов пароля для 7-Zip в cmd   Ввод символов пароля для 7-Zip в cmd   Ввод символов пароля для 7-Zip в cmd  

0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
20.02.2025, 09:06  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
Не-не. Шапка должна быть со всеми её учётами. Выпиливать её как раз нельзя.
Мою шапку из моего батника, который я кидал в лс или из твоего? Я запутался
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
20.02.2025, 09:16
Цитата Сообщение от Vasek2 Посмотреть сообщение
Один и тот же батник в разных системах.
Ну у меня на Win7 такого точно нет.

Цитата Сообщение от Vasek2 Посмотреть сообщение
Мою шапку из моего батника, который я кидал в лс или из твоего?
Я дал батник на тест в том виде, в котором его и нужно тестировать. И сообщить о результатах. Как там подстраивать под твой, это уже следующий вопрос.
0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
20.02.2025, 10:08  [ТС]
FlasherX, три скрина.
1 - 1251
2 - 866 при запуске
3 - 866 после нажатия на "Да"
В Win11 поведение идентичное Win7
Миниатюры
Ввод символов пароля для 7-Zip в cmd   Ввод символов пароля для 7-Zip в cmd   Ввод символов пароля для 7-Zip в cmd  

0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
20.02.2025, 10:50
Vasek2
1. Так, почему-то кнопка не сместилась вниз, а первое поле стало правее. Не понял, откуда там 'a'. Ты точно исходник проверяешь или опять отсебятины добавил?
2. Номер строки не соответствует логике ошибки. Ты что-то поменял?
3. Очевидно, это не 866-вариант из спойлера, а ANSI. И там нет "Да". Поскольку пароль обязателен, текст (хотя бы один кружок) в обоих полях тоже, только после этого происходит сравнение. Нажимать можно Enter в полях (это указано в кнопке).
0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
20.02.2025, 12:42  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
или опять отсебятины добавил?
Я просто передвинул cmd, чтобы на скрине виднее было.

Больше ничего не менял, только копи-паст
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
20.02.2025, 14:25
Лучший ответ Сообщение было отмечено Vasek2 как решение

Решение

Vasek2, гмм. Вот они же в скрепке. Такой результат?
Вложения
Тип файла: 7z CMD_PASS.7z (1.3 Кб, 7 просмотров)
1
bat-пропагандист
 Аватар для nekit270
981 / 183 / 76
Регистрация: 07.12.2022
Сообщений: 454
Записей в блоге: 12
21.02.2025, 00:01
господа, а как насчёт использования UTF-8?

Windows Batch file
1
2
3
4
@echo off
chcp 65001>nul
for /f "usebackq tokens=*" %%i in (`mshta "about:<meta charset=utf-8><hta:application border=none scroll=no innerborder=no />Введите<br><input id=i1 type=password><br>Повторите<br><input id=i2 type=password onkeyup=check()><br><button onclick=check(1)>Проверить</button><script>moveTo(screen.width/2-160,screen.height/2-75);resizeTo(320,150);function check(b){if(i1.value==i2.value&&(b||event.keyCode==13)){new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(i1.value);close();}}</script>"`) do set "PASS=%%i"
echo %PASS%
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
21.02.2025, 08:41
Цитата Сообщение от nekit270 Посмотреть сообщение
господа, а как насчёт использования UTF-8?
На XP скорее не сработает. И я так понимаю, это функциональный обрубок от приводимого мной, т. е. опущены важные нюансы.
0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
21.02.2025, 21:53  [ТС]
nekit270, я так пробовал и при этом делал документ в UTF-8 без BOM - иероглифы. И это не только в XP.

FlasherX, ща закончу с делами и тестану
0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
07.03.2025, 09:47  [ТС]
Цитата Сообщение от FlasherX Посмотреть сообщение
гмм. Вот они же в скрепке. Такой результат?
Эм, работает. Разве что у кнопки Enter есть [=
И сработали оба
Миниатюры
Ввод символов пароля для 7-Zip в cmd  
0
6999 / 2884 / 1109
Регистрация: 06.06.2017
Сообщений: 9,803
07.03.2025, 15:34
Цитата Сообщение от Vasek2 Посмотреть сообщение
Разве что у кнопки Enter есть [=
Это для красоты. Но похоже, у тебя масштаб шрифтов где-то 150%. Поиграйтся с width:200 в последней строке строке. Можно сразу 300 сделать, как для полей.

Цитата Сообщение от Vasek2 Посмотреть сообщение
И сработали оба
ЧТД.
0
12 / 12 / 2
Регистрация: 17.11.2013
Сообщений: 532
07.03.2025, 20:39  [ТС]
FlasherX, да масштаб 150% как раз Ноут 14"

Чтд...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.03.2025, 20:39
Помогаю со студенческими работами здесь

Ввод пароля для БД Oracle
Есть БД Oracle, хочу сделать так, чтобы пользователь вводил свой логин и пароль в созданную мной форму при запуске программы. Сделал...

Авто-ввод пароля для подключения к БД
ДОбрый день! Возник такой вопрос: при запуске проекта(из делфи, или же из экзешного скомпилированного файла) постоянно требуется вводить...

Деактивация пароля в 7-zip архиве
Даже и не знал, где тему создать. Суть вот в чём: есть скачанный файл в архиве, открываю 7-zip, просит пароль. Для пароля нужно пройти...

Многопоточный подбор пароля к архиву zip
Добрый день! Задача такая:распаковать zip-архив,защищенный паролем(разбить на потоки). С работой с zip архивами в билдере...

VBulletin Отдельная страница для ввод пароля/логина
Здравствуйте Подскажите, пожалуйста, как реализовать отдельную страничку для авторизации в VB4? Так, как это сделано на данном сайте.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru