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

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

11.02.2025, 21:38. Показов 4546. Ответов 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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
7001 / 2885 / 1110
Регистрация: 06.06.2017
Сообщений: 9,812
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
Ответ Создать тему
Новые блоги и статьи
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения. https:/ / habr. com/ ru/ sandbox/ 295048/ начало и оглавление - Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0) Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона Уважаемые коллеги! В продолжение. . .
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru