|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Разбить строку на две подстроки по последнему символу \ |
|
CMD/BAT - Разбить строку на две подстроки по последнему символу \
|
Новый участник Сообщения: 48 |
Профиль | Сайт | Отправить PM | Цитировать
Имеется множество строк вида КОРЕНЬ_РАЗДЕЛА_РЕЕСТРА\название\подраздела\реестра\параметр_реестра разной длины, т.е. они содержат неодинаковое количество символов \ (получены экспортом из procmon). Помогите, пожалуйста, разбить каждую на две подстроки: КОРЕНЬ_РАЗДЕЛА_РЕЕСТРА\название\подраздела\реестра и параметр_реестра.
Цель - подать эти значения на вход cmd-скрипта, выполняющего экспорт конкретных параметров реестра от ув. amel27. Если необходимо, массив исходных данных можно вынести в отдельный txt-файл. Дошёл до такого этапа и всё, большего моё гуманитарное образование не позволяет: @Echo Off if not exist "c:\backup\reg" mkdir c:\backup\reg set count=1 for %%? in ( "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Fax\ChangeID" "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports\nul:" "HKU\S-1-5-19\Software\Microsoft\Windows NT\CurrentVersion\Devices\Отправить в OneNote 2010" "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Отправить в OneNote 2010\ChangeID" ) do call:reg_exp %%? ) goto :end :reg_exp Set $R_REG=здесь_должно_быть_название_подраздела_реестра_из_переданной_в_функцию_строки Set $R_VAL=здесь_должно_быть_название_параметра_реестра_из_переданной_в_функцию_строки Set $R_TMP=HKEY_CURRENT_USER\Temp Set $F_REG=c:\backup\reg\%count%.reg Set $F_TMP=c:\backup\reg\%count%.tmp Set $N=1 For %%i In (%$R_VAL%) Do Set /A $N+=1 Reg Delete "%$R_TMP%" /f >Nul 2>&1 If Exist "%$F_TMP%" DEL /F/Q "%$F_TMP%" If Exist "%$F_REG%" DEL /F/Q "%$F_REG%" For /F "Tokens=%$N%* Delims= " %%i In ( 'REG Query "%$R_REG%" /v "%$R_VAL%"^|FindStr /IBRC:"[ ]*%$R_VAL%[ ][ ]*REG_"' ) Do REG ADD "%$R_TMP%" /v "%$R_VAL%" /t %%i /f /d "%%j" >Nul RegEdit /E:A "%$F_TMP%" "%$R_TMP%" For /F "Delims=:" %%i In ('FindStr /BNC:^"[^" "%$F_TMP%"') Do Set $M=%%i For /F "Tokens=1* Delims=:" %%i In ('FindStr /BVNC:^"]^" "%$F_TMP%"') Do ( If %%i EQU %$M% ( Echo.[%$R_REG%]>>%$F_REG% ) ELSE ( Echo.%%j>>%$F_REG% ) ) set /a count=count+1 exit /b :end |
|
Отправлено: 23:22, 08-01-2016 |
Ветеран Сообщения: 874
|
Профиль | Отправить PM | Цитировать @echo off for %%? in ( "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Fax\ChangeID" "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Ports\nul:" "HKU\S-1-5-19\Software\Microsoft\Windows NT\CurrentVersion\Devices\Отправить в OneNote 2010" "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers\Отправить в OneNote 2010\ChangeID" ) do ( call :sub %%? ) goto :eof :sub setlocal set "s=%~1" :sub_1 for /f "tokens=1* delims=\" %%i in ("%s%") do set s=%%j& set t=%%i if defined s ((if defined x (set "x=%x%\%t%") else (set "x=%t%"))& goto %0_1) else (set "y=%t%") set "first_substring=%x%" set "second_substring=%y%" echo "%first_substring%" echo "%second_substring%" echo. pause echo. endlocal exit /b 0 |
Отправлено: 03:22, 09-01-2016 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 48
|
Профиль | Сайт | Отправить PM | Цитировать Georgio, Вашу идею понял, спасибо большое!! Я в своей домашне-сисадминской практике с if defined ещё не сталкивался :-) .
|
Отправлено: 09:32, 09-01-2016 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Любой язык - [решено] Как разбить одну строку на много строк | KooDI | Скриптовые языки администрирования Windows | 56 | 06-08-2013 23:26 | |
Установка - Разбить хард на две части после установки системы | twinzzz75 | Microsoft Windows 2000/XP | 12 | 09-03-2013 07:41 | |
CMD/BAT - [решено] Как построчно разбить текстовый файл на текстовые файлы содержащие одну строку | binwatch@vk | Скриптовые языки администрирования Windows | 3 | 09-09-2012 19:59 | |
Медиа - Как разбить фильм на две части. | verdix | Видео и аудио: обработка и кодирование | 18 | 02-07-2008 23:58 | |
разбить строку | khvalera | Программирование и базы данных | 1 | 06-05-2004 12:48 |
|