Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Вывод окна пользователю для ввода информации CMD (http://forum.oszone.net/showthread.php?t=343016)

ownsmir 20-11-2019 12:22 2897275

Вывод окна пользователю для ввода информации CMD
 
Здравствуйте, Великие умы!
Есть команда
Код:

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

alpap 20-11-2019 15:10 2897292

Цитата:

Цитата ownsmir
показывалось окно, с полем ввода »

у cmd нет такого окна и соответственно такой возможности реализации именно чистыми своими средствами.

ownsmir 20-11-2019 16:20 2897297

получилось примерно так
Код:

@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 2897306

Цитата:

Цитата ownsmir
как сделать чтобы он искал полностью вводимое выражение дословно с пробелами? »

Код:

findstr.exe /l /c:"bla bla bla"

ownsmir 20-11-2019 17:49 2897307

Цитата:

Цитата ownsmir
назначает необходимые права для копирования ЭЦП »

Уже понял что тупость сморозил, у пользователя нет прав назначать права...
Тогда хотя-бы первую часть разобраться бы как искать полностью с пробелами переменную в файле

ownsmir 20-11-2019 18:49 2897317

Цитата:

Цитата Iska
findstr.exe /l /c:"bla bla bla" »

не подскажешь как найденное записать в переменную? убрав первые несколько значений \\.\FAT12_H\

alpap 20-11-2019 19:44 2897327

ownsmir,
"живая" строка, четкая задача - иначе долго ответа ждать придется.

ownsmir 21-11-2019 10:19 2897385

Пока рабочий код получается таким
Код:

@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 2897406

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

ownsmir 21-11-2019 16:18 2897418

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

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

ownsmir 21-11-2019 16:44 2897421

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

alpap 21-11-2019 19:19 2897440

Цитата:

Цитата ownsmir
автоматизировать »

с вашей постановкой сценария - ну такое себе
Цитата:

Цитата ownsmir
Обезопасить диск с ЭЦП от лишнего проникновения »

а вот тут совершенно непонятно - батник не дает защиты, файл доступен и известно где, какая защита и кого от кого? Может проще дать права гр. политикой кому надо и не заниматься ерундой?

ownsmir 22-11-2019 09:58 2897488

Цитата:

Цитата alpap
а вот тут совершенно непонятно - батник не дает защиты, файл доступен и известно где, какая защита и кого от кого? Может проще дать права гр. политикой кому надо и не заниматься ерундой? »

батник будет переформатирован в exe и зашифрован...
Может не мою цель и задачи будем разбирать? а разберемся как
Цитата:

Цитата ownsmir
Нужно в файле найти все строки совпадающие с заданным условием поиска в переменной %name% (это текст фамилия или часть названия организации) и ВСЕ найденные строки записать каждую в свою переменную для дальнейшего выбора пользователя нужной переменной. »


Busla 22-11-2019 13:37 2897521

Цитата:

Цитата ownsmir
Может не мою цель и задачи будем разбирать? а разберемся как »

вот потому у вас и не получается, что "как" не зависит от цели и задачи

Iska 25-11-2019 15:01 2897926

Цитата:

Цитата ownsmir
батник будет переформатирован в exe и зашифрован... »

И, вдогон коллегам, добавлю — не будьте столь наивны.


Время: 13:07.

Время: 13:07.
© OSzone.net 2001-