CMD/BAT - Замена строк в файле по признаку и маске

Ответить
 • Просмотры: 1
Аватара пользователя
Iska

Re: CMD/BAT - Замена строк в файле по признаку и маске

Сообщение Iska »

Код пакетного файла:







Код:

Код: Выделить всё

@echo off
setlocal
set "file=C:\Test\example.txt"
set "text_1=[задаваемая маска]"
set "text_2=[задаваемая маска два]"
set "text_3=[задаваемая маска три]"
for /f %%i in ('"type "%file%"& del "%file%""') do (
 set x=%%i
 call set x=%%x:~1,-1%%
 call set x=%%x:.=%%
 set/a y+=1
 for /f "tokens=1,2 delims=*" %%j in ('
  "set/a x& <nul set/p=*& set/a y"
 ') do (
  if defined z (
   if %%j equ %%k (
    call set "string=%text_1%%%z%%"
   ) else (
    call set "string=%text_2%%%z%%%text_3%"
    set blank=true
   )
  )
 )
 >>"%file%" (
 if defined string cmd/v/c echo !string!
 if defined blank echo.& set blank=
 )
 set/a y=x
 set z=%%i
)
>>"%file%" cmd/v/c echo !text_2!%z%!text_3!
endlocal
exit/b



.
Аватара пользователя
Georgio

Re: CMD/BAT - Замена строк в файле по признаку и маске

Сообщение Georgio »

Цитата ВиталийВ:



после вставки [задаваемая маска три] делается лишний перевод строки
CMD/BAT - Замена строк в файле по признаку и маске










Ну почему же "лишний"? Вы же сами писали в ТЗ:






Цитата ВиталийВ:



конечное состояние:



[задаваемая маска]61400013.68F

[задаваемая маска]61400013.69F

[задаваемая маска]61400013.70F

[задаваемая маска два]61400013.71F[задаваемая маска три]



[задаваемая маска]61400048.51F

[задаваемая маска два]61400048.52F[задаваемая маска три]



[задаваемая маска]61400070.16F

[задаваемая маска]61400070.17F

[задаваемая маска]61400070.18F

[задаваемая маска два]61400070.19F[задаваемая маска три]



[задаваемая маска]61400215.23F

[задаваемая маска]61400215.24F

[задаваемая маска два]61400215.25F[задаваемая маска три]
CMD/BAT - Замена строк в файле по признаку и маске






.







Чтобы пустая строка не выводилась, нужно "закомментировать" строку " set blank=true" или (и) строку " if defined blank echo.& set blank=":

Код:

Код: Выделить всё

     rem set blank=true

или (и)

Код:

Код: Выделить всё

 rem if defined blank echo.& set blank=

.
Аватара пользователя
ВиталийВ

Re: CMD/BAT - Замена строк в файле по признаку и маске

Сообщение ВиталийВ »

Попробовал закомментировать обе строки - вышло как надо.



Спасибо огромное - выручили несказАнно!!!!!!!



Тетки на работе вздохнут немного, а то они по 2-3 тыщи файлов глазами отсматривали, сейчас это будет в автомате.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»