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

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

Alex1254 19-09-2013 19:24 2220604

CMD/BAT разбор строки с символом перехода строки в конце.
 
Пишу 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
)

)



Время: 14:36.

Время: 14:36.
© OSzone.net 2001-