Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Копирование указанного количество блоков из txt файла, начиная с конца (http://forum.oszone.net/showthread.php?t=287251)

Alexander_88 30-08-2014 17:14 2396216

Копирование указанного количество блоков из txt файла, начиная с конца
 
Здравствуйте. Подскажите возможно ли из txt файла, в котором куча блоков текста разделенные через символ //================== скопировать указанное количество последних блоков в другой txt файл, а также после каждого блока добавить тот же символ //==================
Т.е. к примеру у меня txt файл:

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

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

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

:help:

Georgio 30-08-2014 18:25 2396254

Код:

@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 2396279

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

Код:

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

n = 2 поставил

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

Alexander_88 30-08-2014 20:15 2396300

Зря я обрадовался, подставил в свой тхт файл, в итоге, файл new получился просто как копия, искал в чем дело, убирал символы, в итоге выяснилось, что из за символа / происходит, просто там есть ссылки, а также символы
Код:

/ : [ ] . _ -
а также пустые строки

Georgio 30-08-2014 20:42 2396319

Alexander_88, приведите содержимое файла полностью.

Alexander_88 30-08-2014 20:54 2396329

Код:

jhjhghgjhgjhgjhg, jhfgfgfhghgf
-----------------------------------------------------
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghj...gjb_m.jpg(/img)
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghj...gjb_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...fghhg.avi(/url)
//==================
jhjhghgjhgjhgjhg, jhfgfgfhghgf
-----------------------------------------------------
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghj...gjb_m.jpg(/img)
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghj...gjb_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...fghhg.avi(/url)
//==================
jhjhghgjhgjhgjhg, jhfgfgfhghgf
-----------------------------------------------------
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghj...gjb_m.jpg(/img)
(img)http://5s.hghjgjhg.hg/0176gh4/fkhghj...gjb_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...fghhg.avi(/url)
//==================

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

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

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

Iska 30-08-2014 21:24 2396346

Цитата:

Цитата Alexander_88
он большой, я 3 блока взял »

Вместо:
Цитата:

Цитата Alexander_88
только вместо круглых скобок в тегах , квадратные
и где жирное там (b) тоже через квадратные »

— упакуйте Ваш файл в архив и приложите к сообщению. Именно так надо было сделать в самом первом сообщении вместо «к примеру».

Georgio 30-08-2014 22:07 2396363

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 2396364

упаковал в рар, прикрепил к сообщению

Alexander_88 30-08-2014 22:16 2396366

Georgio, все работает отлично, спасибо вам :)


Время: 18:08.

Время: 18:08.
© OSzone.net 2001-