Имя пользователя:
Пароль:
 

Название темы: Удаление строк
Показать сообщение отдельно

Старожил


Сообщения: 426
Благодарности: 108

Профиль | Отправить 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

Название темы: Удаление строк