PDA

Показать полную графическую версию : [решено] Копирование указанного количество блоков из txt файла, начиная с конца


Alexander_88
30-08-2014, 17:14
Здравствуйте. Подскажите возможно ли из txt файла, в котором куча блоков текста разделенные через символ //================== скопировать указанное количество последних блоков в другой txt файл, а также после каждого блока добавить тот же символ //==================
Т.е. к примеру у меня txt файл:

//==================
блок1
//==================
блок2
//==================
блок3
//==================
блок4
//==================
........................
//==================
блок5000
//==================

Я указал 5 последних блоков. После применения кода должен получиться такой txt:

блок4996
//==================
блок4997
//==================
блок4998
//==================
блок4999
//==================
блок5000
//==================

:help:

Georgio
30-08-2014, 18:25
@echo off

set n=5

for /f %%i in ('
find /c "//=================="^<"example.txt"
') do (
set /a n=%%i-%n%
)
for /f "tokens=2 delims=:" %%i in ('
findstr /n \/\/================== "example.txt"^| findstr /n "^"^| findstr "^%n%:"
') do (
more +%%i<"example.txt">"new.txt"
)

exit /b

Alexander_88
30-08-2014, 19:11
что то у меня ничего не происходит, просто черный экран открылся закрылся и все, а файла new нету, в папке создал example.txt и там такой текст:

//==================
block1
//==================
block2
//==================
block3
//==================
block4
//==================
block5
//==================

n = 2 поставил

спасибо, работает, новый txt просто создал, тот походу в unicode был

Alexander_88
30-08-2014, 20:15
Зря я обрадовался, подставил в свой тхт файл, в итоге, файл new получился просто как копия, искал в чем дело, убирал символы, в итоге выяснилось, что из за символа / происходит, просто там есть ссылки, а также символы / : [ ] . _ - а также пустые строки

Georgio
30-08-2014, 20:42
Alexander_88, приведите содержимое файла полностью.

Alexander_88
30-08-2014, 20:54
jhjhghgjhgjhgjhg, jhfgfgfhghgf
-----------------------------------------------------
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghjgjhhgh_o/0419tgjb_m.jpg(/img)
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghjgjhhgh_o/0419tgjb_m.jpg(/img)

jhdjkhcwjdckwdc, wjehkwehgjkwehdwjed, wjhfwgweghdwgehgf, wejhfkwjehfkjwehfk

asxasxasx: 45gfgf.mpg
asxasxasx: 434234234
asxasxasx: 00:31:14
asxasxasx: 896.31 MB

uuyyuyyy
(url)http://jhgjhgjhgjj.hgh/fgdgffgdfdgfd/6767gjfghhg.avi(/url)
//==================
jhjhghgjhgjhgjhg, jhfgfgfhghgf
-----------------------------------------------------
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghjgjhhgh_o/0419tgjb_m.jpg(/img)
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghjgjhhgh_o/0419tgjb_m.jpg(/img)

jhdjkhcwjdckwdc, wjehkwehgjkwehdwjed, wjhfwgweghdwgehgf, wejhfkwjehfkjwehfk

asxasxasx: 45gfgf.mpg
asxasxasx: 434234234
asxasxasx: 00:31:14
asxasxasx: 896.31 MB

uuyyuyyy
(url)http://jhgjhgjhgjj.hgh/fgdgffgdfdgfd/6767gjfghhg.avi(/url)
//==================
jhjhghgjhgjhgjhg, jhfgfgfhghgf
-----------------------------------------------------
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghjgjhhgh_o/0419tgjb_m.jpg(/img)
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghjgjhhgh_o/0419tgjb_m.jpg(/img)

jhdjkhcwjdckwdc, wjehkwehgjkwehdwjed, wjhfwgweghdwgehgf, wejhfkwjehfkjwehfk

asxasxasx: 45gfgf.mpg
asxasxasx: 434234234
asxasxasx: 00:31:14
asxasxasx: 896.31 MB

uuyyuyyy
(url)http://jhgjhgjhgjj.hgh/fgdgffgdfdgfd/6767gjfghhg.avi(/url)
//==================

он большой, я 3 блока взял

только вместо круглых скобок в тегах , квадратные

и где жирное там (b) тоже через квадратные

Iska
30-08-2014, 21:24
он большой, я 3 блока взял »
Вместо:
только вместо круглых скобок в тегах , квадратные
и где жирное там (b) тоже через квадратные »
— упакуйте Ваш файл в архив и приложите к сообщению. Именно так надо было сделать в самом первом сообщении вместо «к примеру».

Georgio
30-08-2014, 22:07
Alexander_88, проблема скрывалась в непроставленных мной кавычках (кстати, интересная тема: в данном случае знаки равенства необходимо экранировать, или же нужно заключать в кавычки содержащую их строку, если это возможно).


@echo off

set n=5

for /f %%i in ('
find /c "//=================="^<"example.txt"
') do (
set /a n=%%i-%n%
)
for /f "tokens=2 delims=:" %%i in ('
findstr /n "\/\/==================" "example.txt"^| findstr /n "^"^| findstr "^%n%:"
') do (
more +%%i<"example.txt">"new.txt"
)

exit /b

Alexander_88
30-08-2014, 22:09
упаковал в рар, прикрепил к сообщению

Alexander_88
30-08-2014, 22:16
Georgio, все работает отлично, спасибо вам :)




© OSzone.net 2001-2012