Войти

Показать полную графическую версию : [решено] Вывод окна пользователю для ввода информации CMD


ownsmir
20-11-2019, 12:22
Здравствуйте, Великие умы!
Есть команда
csptest.exe -keycopy -src «Имя исходного контейнера» -pinsrc=пароль -dest «Имя конечного контейнера» -pindest=пароль
есть задача, (не буду подробно) чтобы после запуска батника на копирование ключа в моменте «Имя исходного контейнера» пользователю показывалось окно, с полем ввода наименования ключа (наименование которого у него будет) и кнопкой "Установить". Если такой ключ не будет найден (поиск происходит сам программой csptest.exe), то пользователю выйдет окно с ошибкой что "такой ключ не найден, попробуйте снова". Ну и как бонус в команду «Имя конечного контейнера» дописывать к введенному наименованию при копировании "-копия".

alpap
20-11-2019, 15:10
показывалось окно, с полем ввода »
у cmd нет такого окна и соответственно такой возможности реализации именно чистыми своими средствами.

ownsmir
20-11-2019, 16:20
получилось примерно так
@echo off
set /p "keys=Введите наименование ключа:"
echo Наименование ключа: %keys%
subst K: C:\test
cd "C:\Program Files\Crypto Pro\CSP\"
csptest.exe -keycopy -contsrc "%keys%" -pinsrc="" -contdest "\\.\REGISTRY\%keys%-копия" -pindest=""
if %errorlevel%==0 (
goto :yes
) else (
goto :no
)

:no
echo Ключ не установлен, попробуйте снова.
subst K: /d
pause
exit

:yes
echo Ключ устанавливается.
csptest.exe -property -cinstall -cont "%keys%-копия"
subst K: /d
echo Ключ устанавливился.
pause

Но помимо всего написанного, нужно добавить еще поиск наименования из файла (в котором есть список), чтобы пользователь ввел название, пошел поиск этого наименования в файле, если нашел подключает диск, назначает необходимые права для копирования ЭЦП, копирует, устанавливает сертификат, удаляет назначенные права и отключает диск. Получится реализовать? findstr /M %keys% C:\test\keys.txt не хочет, ищет по словам а не все выражение, как сделать чтобы он искал полностью вводимое выражение дословно с пробелами?

Iska
20-11-2019, 17:48
как сделать чтобы он искал полностью вводимое выражение дословно с пробелами? »
findstr.exe /l /c:"bla bla bla"

ownsmir
20-11-2019, 17:49
назначает необходимые права для копирования ЭЦП »
Уже понял что тупость сморозил, у пользователя нет прав назначать права...
Тогда хотя-бы первую часть разобраться бы как искать полностью с пробелами переменную в файле

ownsmir
20-11-2019, 18:49
findstr.exe /l /c:"bla bla bla" »
не подскажешь как найденное записать в переменную? убрав первые несколько значений \\.\FAT12_H\

alpap
20-11-2019, 19:44
ownsmir,
"живая" строка, четкая задача - иначе долго ответа ждать придется.

ownsmir
21-11-2019, 10:19
Пока рабочий код получается таким
@echo off
set /p "name=Введите наименование ключа:"
echo Наименование ключа: %name%
for /f "delims=" %%a in ('findstr /l /c:"%name%" C:\test\keys.txt') do set keys=%%a
echo Найденный ключ: %keys%
pause
if %errorlevel%==0 (
goto :yes
) else (
goto :no
)

:no
echo Название ключа не найдено, попробуйте снова.
pause
exit

:yes
echo Ключ устанавливается.
subst K: C:\test
cd "C:\Program Files\Crypto Pro\CSP\"
csptest.exe -keycopy -contsrc "%keys%" -pinsrc="" -contdest "\\.\REGISTRY\%keys%-копия" -pindest=""
if %errorlevel%==0 (
goto :yes
) else (
goto :no
)

:no
echo Ключ не установлен, попробуйте снова.
subst K: /d
pause
exit

:yes
echo Ключ устанавливается.
csptest.exe -property -cinstall -cont "%keys%-копия"
subst K: /d
echo Ключ устанавливился.
pause

Задача: После ввода части названия ключа (фамилии или часть названия организации) пользователем, происходит поиск совпадений в файле. Если находится более 1 совпадения, эти совпадения (полностью всю строку) записываются каждый в свою переменную и пользователю дает выбрать варианты из найденных результатов (в виде cmd под цифрами 1,2,3 и т.д.) Пользователь выбирает и процесс идет дальше.

alpap
21-11-2019, 14:54
ownsmir,
ну и попробуйте делать запрос по:
"Спир", "Захар" или "Констант"
из файла:
Спиридонов Захар Константинович
Спиртзавод "Константин"
село Захарово, ул. Константиновская
и это так, навскидку и без двойных фамилий и прочих чудес (кодировки, кириллицы и спецсимволов)
ownsmir,
подобные вещи делаются наоборот:
-----
в файл строки записываются с учетом заданного форматирования (шаблона)
считывается определенная строка где будет наиболее уникальная информация
выводятся такие строки (или понятная уникальная часть) с номером, который надо ввести и по идентификации попадаем в файл или что что там надо сделать, кстати так и не написано что надо-то в конце концов, может все проще другим путем сделать и файла тоже нет для понимания, опять пальцем в небо.
Напишите полную задачу, цель этой задачи, а вот как раз ваши попытки реализации совершенно не нужны.

ownsmir
21-11-2019, 16:18
Задача: При запуске файла выходит окно пользователю для ввода названия ключа, пользователь его вводит, по введенному названию происходит поиск в файле на совпадение. Все найденные совпадению выводятся пользователю (под цифрами) для выбора нужного наименования ключа. После выбора пользователя происходит подключение папки с ключами как диска, и выполняются команды по его установке в реестр (с начало копирование потом установка сертификата), после успешного выполнения диск подключенный ранее отключается.

Цель: Обезопасить диск с ЭЦП от лишнего проникновения и автоматизировать установку ЭЦП бухгалтерии в реестр

ownsmir
21-11-2019, 16:44
Хорошо поставлю задачу проще: Нужно в файле найти все строки совпадающие с заданным условием поиска в переменной %name% (это текст фамилия или часть названия организации) и ВСЕ найденные строки записать каждую в свою переменную для дальнейшего выбора пользователя нужной переменной.

alpap
21-11-2019, 19:19
автоматизировать »
с вашей постановкой сценария - ну такое себе
Обезопасить диск с ЭЦП от лишнего проникновения »
а вот тут совершенно непонятно - батник не дает защиты, файл доступен и известно где, какая защита и кого от кого? Может проще дать права гр. политикой кому надо и не заниматься ерундой?

ownsmir
22-11-2019, 09:58
а вот тут совершенно непонятно - батник не дает защиты, файл доступен и известно где, какая защита и кого от кого? Может проще дать права гр. политикой кому надо и не заниматься ерундой? »
батник будет переформатирован в exe и зашифрован...
Может не мою цель и задачи будем разбирать? а разберемся как Нужно в файле найти все строки совпадающие с заданным условием поиска в переменной %name% (это текст фамилия или часть названия организации) и ВСЕ найденные строки записать каждую в свою переменную для дальнейшего выбора пользователя нужной переменной. »

Busla
22-11-2019, 13:37
Может не мою цель и задачи будем разбирать? а разберемся как »
вот потому у вас и не получается, что "как" не зависит от цели и задачи

Iska
25-11-2019, 15:01
батник будет переформатирован в exe и зашифрован... »
И, вдогон коллегам, добавлю — не будьте столь наивны.




© OSzone.net 2001-2012