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

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

Starter1 18-06-2011 14:46 1696975

Find пределы поиска
 
Помогите пожалуйста :).
Такая вот задача.

У нас есть текст

Код:

[start_text] Клавиату́ра — устройство, представляющее собой набор кнопок (клавиш), предназначенных для управления каким-либо устройством или для ввода информации.
Как правило, кнопки нажимаются пальцами рук.
Радиосвязь между мышью и приёмным устройством, подключённым к компьютеру, позволила избавиться от недостатков инфракрасной связи, но породила не менее курьезную проблему: поскольку радиус действия этих мышей составлял несколько метров, а организации, как правило, закупали однотипную технику партиями, бывали случаи когда курсором на экране компьютера управляла мышь, расположенная даже на соседнем этаже.
var=qwerty
var=hard
var=factory
Такие мыши как правило, имеют переключатель, позволяющий выбрать один из двух радиочастотных каналов, в большинстве случаев переход на другой канал снимал проблемы.[end_text]

Изначально для мыши каждый производитель разрабатывал свой собственный метод передачи сигнала. Однако впоследствии для связи стало всё более широко применяться Bluetooth-соединение, это позволило ввести единый стандарт, а также позволило избавиться от приёмного устройства, так как некоторые компьютеры (особенно ноутбуки) уже оснащены Bluetooth-адаптером, и решить проблему идентификации мыши.
var=vector
var=mesh
var=default
На данный момент (середина 2009 года) Bluetooth-мыши продаются сравнительно недорого (от 30$).

Необходимо вывести в exit.txt все строки в которых содержится var, но только от [start_text] и до [end_text] и больше не выводить.
Заранее спасибо! :)

amel27 18-06-2011 15:31 1696998

Код:

@(SETLOCAL EnableDelayedExpansion
set "TYPE=N"& for /f "usebackq delims=" %%a in ("file.txt") do @(set "$a=%%a"
  if not "!$a!"=="!$a:[start_text]=!" set "TYPE=Y"
  if not "!$a!"=="!$a:[end_text]=!"  set "TYPE=N"
  if not "!$a!"=="!$a:var=!" if "!TYPE!"=="Y" echo !$a!
))>"exit.txt"


Starter1 18-06-2011 15:41 1697002

Спасибо работает :)

amel27 18-06-2011 17:50 1697085

Цитата:

Цитата Starter1
Спасибо за прогу :) работает чётко, но столкнулся с проблемой: вместо [start_text] и [end_txt] не могу вставить переменную вот что-то вроде этого

@(SETLOCAL EnableDelayedExpansion
set sp=[start_text]
set sv=[end_text]
set "TYPE=N"& for /f "usebackq delims=" %%a in ("file.txt") do @(set "$a=%%a"
if not "!$a!"=="!$a:!sp!=!" set "TYPE=Y"
if not "!$a!"=="!$a:!sv!=!" set "TYPE=N"
if not "!$a!"=="!$a:var=!" if "!TYPE!"=="Y" echo !$a!
))>"exit.txt"
pause


В общем в выходном файле пусто.
Что делать?

Код:

@echo off
set sp=[start_text]
set sv=[end_text]
(
SETLOCAL EnableDelayedExpansion
set "TYPE=N"& for /f "usebackq delims=" %%a in ("file.txt") do (set "$a=%%a"
  if not "!$a!"=="!$a:%sp%=!" set "TYPE=Y"
  if not "!$a!"=="!$a:%sv%=!"  set "TYPE=N"
  if not "!$a!"=="!$a:var=!" if "!TYPE!"=="Y" echo !$a!
))>"exit.txt"

P.S. см. 2-ю строку подписи:

Starter1 18-06-2011 17:59 1697094

Спасибо большое ещё раз всё робит удачи вам :)!


Время: 08:23.

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