|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Удаление строк |
|
CMD/BAT - Удаление строк
|
Пользователь Сообщения: 139 |
Профиль | Отправить PM | Цитировать Всем участникам форумы респект!
Вот такая проблема, пользуюсь частенько Regshot, в отчетах (.reg) всегда появляются дублирующие строки Типа так: [HKEY_CLASSES_ROOT\CLSID\{11C3CCDE-3BE1-4840-95BC-8063AE5CCE88}] [HKEY_CLASSES_ROOT\CLSID\{11C3CCDE-3BE1-4840-95BC-8063AE5CCE88}] @="ColExt Class" А то и по три!!! Как можно очистить автоматически удалить дубликаты, оставив лишь нижнею? И второй вопрос как удалить(в .reg) все строки и значения начинающийся к примеру на [HKEY_CLASSES_ROOT\CLSID\{11C3CCDE-3BE1-4840-95BC-8063AE5CCE88}]***** Заранее спасибо! |
|
Отправлено: 10:57, 07-10-2010 |
Старожил Сообщения: 426
|
Профиль | Отправить PM | Цитировать Очень сложный вопрос для Batch-файлов - в таких файлах слишком много спецсимволов, на которых батник будет валиться. Быстро поправил старую наработку, но...
ничего не гарантирую, тестируйте и сравнивайте, но скорее всего Вам нужен WBS @Echo off setLocal EnableExtensions rem Убрать строки по маске и подобрать подряд идущие одинаковые строки set Src=*.reg set Remove=[HKEY_CLASSES_ROOT\CLSID\{11C3CCDE-3BE1-4840-95BC-8063AE5CCE88}] if not %1_==_ set Src="%~1" set Remove=%Remove:\=\\% set Line= set File=. for /f "tokens=1 delims=" %%F in ('dir /a /b /on %Src%') do ( set File="%%F" del "%%~dpnF.tmp">nul 2>nul ren "%%F" *.tmp if %ErrorLevel%==0 ( findstr /VLC:"%Remove%" "%%~dpnF.tmp">"%%F" 2>nul del "%%~dpnF.tmp">nul 2>nul ren "%%F" *.tmp for /f "UseBackQ tokens=1* delims=" %%L in ("%%~dpnF.tmp") do call :Proceed "%%L" del "%%~dpnF.tmp">nul 2>nul ) else echo Ошибка! Файл %%F недоступен! ) goto :end :Proceed set Str=%Str%%~1 shift if not "%~1"=="" goto :Proceed if not "%Line%"=="%Str%" echo %Str%>>%File% set "Line=%Str%" set Str= exit /b :end |
------- Отправлено: 18:49, 07-10-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата NiOl:
@echo off CALL :DELE_KEY file.reg "[HKEY_CLASSES_ROOT\CLSID\{11C3CCDE-3BE1-4840-95BC-8063AE5CCE88}" CALL :DISTINCT file.reg EXIT :DISTINCT CHCP 1251 >nul& SETLOCAL DisableDelayedExpansion (for /f "tokens=*" %%a in ('type "%~1"') do (set "$a=%%a" SETLOCAL EnableDelayedExpansion if "!$b:~-1,1!"=="\" set "$a= !$a!" if /i not "!$b!"=="!$a!" (if "!$a:~,1!"=="[" echo.)& echo !$a! ENDLOCAL& set "$b=%%a" ))>"%~dpn0.tmp" copy /y "%~dpn0.tmp" "%~1" >nul&& del "%~dpn0.tmp" CHCP 866 >nul& ENDLOCAL& exit /b :DELE_KEY CHCP 1251 >nul& SETLOCAL DisableDelayedExpansion& set "$k=[" (for /f "delims=" %%a in ('type "%~1"') do (set "$a=%%a" SETLOCAL EnableDelayedExpansion if "!$a:~0,1!"=="[" set "$k=!$a:%~2=]!" if "!$k:~0,1!"=="[" (if "!$a:~,1!"=="[" echo.)& echo !$a! for /f "delims=" %%i in ("!$k!") do ENDLOCAL& set "$k=%%~i" ))>"%~dpn0.tmp" copy /y "%~dpn0.tmp" "%~1" >nul&& del "%~dpn0.tmp" CHCP 866 >nul& ENDLOCAL& exit /b |
|
Последний раз редактировалось amel27, 09-10-2010 в 11:32. Причина: мелкая оптимизация Отправлено: 12:12, 08-10-2010 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удаление строк в текстовом файле, как это сделать??? | VladZombie | Скриптовые языки администрирования Windows | 70 | 08-09-2020 13:28 | |
CMD/BAT - [решено] Перенос и удаление строк из текстового файла | sk8ter | Скриптовые языки администрирования Windows | 15 | 03-10-2010 19:35 | |
Удаление строк из регфайла... | semiono | AutoIt | 4 | 21-01-2010 11:06 | |
MySQL - Максимаотное количество строк | Jonik-Mnimonik | Программирование и базы данных | 11 | 17-06-2008 08:40 | |
Сложение строк на PHP | Vlad Drakula | Вебмастеру | 1 | 08-06-2003 21:30 |
|