Alex1254
19-09-2013, 19:24
Пишу bat в первый раз и столкнулся с проблемой разбора символа переноса строки.
Описание того, чего хотел добиться....
Если при работе с нашими (Гостовкими) сертификатами так называемые контейнеры с закрытым и открытым ключом, мне нужно все контейнеры с флэшки скопировать в реестр.
Есть консольная утилита от КриптоПро (csptest) ,которая позволяет это сделать.
по этапам:
1. Получаю список всех контейнеров и сохраняю в файл "csptest.exe -keyset -enum_containers -verifycontext -fqcn > list.txt"
Приме вывода list.txt^
\\.\REGISTRY\testfec45f812
\\.\FAT12_Q\Ivanov-17.09.13-6d3d8445aa29babd7ee
\\.\FAT12_Q\Petro-17.09.13-6d3d8445aa29babd7ee
\\.\FAT12_Q\Sidorov-17.09.13-6d3d8445aa29babd7ee
2. Прохожу по всему файлу и если файл лежит на флэшки "If /I %%i==fat12 " копирую контейнер в реестр. Но вот тут и проблема некоторые контейнеры имеют в своем имени символы перевода строки (как в примере Petrov) и в файл они соответственно копируются так же с пустой строкой
3. В итоге когда я пытаюсь командой csptest.exe -keycopy -src.... скопировать сертификат мой bat не учитывает этот символ и берет имя контейнра без него, в результате выдает ошибку т.е. для csptest вот это имя \\.\FAT12_Q\Petro-17.09.13-6d3d8445aa29babd7ee и вот это \\.\FAT12_Q\Petro-17.09.13-6d3d8445aa29babd7ee"\n" разные.
Вопрос как проверять имеется ли в имени контейнера символ перевода строки и как правильно сформировать имя контейнера с этим символом для передачи в csptest?
REM @Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
csptest.exe -keyset -enum_containers -verifycontext -fqcn > list.txt
For /F "tokens=2,3,4 delims=_'\'" %%i In (list.txt) Do (
If /I %%i==fat12 (
csptest.exe -keycopy -src "\\.\%%i_%%j\%%k" -dest "\\.\registry\%%k_n" -silent
)
)
Описание того, чего хотел добиться....
Если при работе с нашими (Гостовкими) сертификатами так называемые контейнеры с закрытым и открытым ключом, мне нужно все контейнеры с флэшки скопировать в реестр.
Есть консольная утилита от КриптоПро (csptest) ,которая позволяет это сделать.
по этапам:
1. Получаю список всех контейнеров и сохраняю в файл "csptest.exe -keyset -enum_containers -verifycontext -fqcn > list.txt"
Приме вывода list.txt^
\\.\REGISTRY\testfec45f812
\\.\FAT12_Q\Ivanov-17.09.13-6d3d8445aa29babd7ee
\\.\FAT12_Q\Petro-17.09.13-6d3d8445aa29babd7ee
\\.\FAT12_Q\Sidorov-17.09.13-6d3d8445aa29babd7ee
2. Прохожу по всему файлу и если файл лежит на флэшки "If /I %%i==fat12 " копирую контейнер в реестр. Но вот тут и проблема некоторые контейнеры имеют в своем имени символы перевода строки (как в примере Petrov) и в файл они соответственно копируются так же с пустой строкой
3. В итоге когда я пытаюсь командой csptest.exe -keycopy -src.... скопировать сертификат мой bat не учитывает этот символ и берет имя контейнра без него, в результате выдает ошибку т.е. для csptest вот это имя \\.\FAT12_Q\Petro-17.09.13-6d3d8445aa29babd7ee и вот это \\.\FAT12_Q\Petro-17.09.13-6d3d8445aa29babd7ee"\n" разные.
Вопрос как проверять имеется ли в имени контейнера символ перевода строки и как правильно сформировать имя контейнера с этим символом для передачи в csptest?
REM @Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
csptest.exe -keyset -enum_containers -verifycontext -fqcn > list.txt
For /F "tokens=2,3,4 delims=_'\'" %%i In (list.txt) Do (
If /I %%i==fat12 (
csptest.exe -keycopy -src "\\.\%%i_%%j\%%k" -dest "\\.\registry\%%k_n" -silent
)
)