Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 10

Автор: ASE_DAG
Дата сообщения: 01.05.2011 19:56
Alexey87
Ну так почему не хотите воспользоваться ГНУ Грепом в режиме перловских регэкспов?

$ grep -Po '<h[1-6].*?>.*?</h[1-6]>' file.html

См. 1080#14.

Добавлено:
Понятно куда это подставить?
В цикл перебора по файлам.
Автор: Alexey87
Дата сообщения: 01.05.2011 20:15
ASE_DAG, а как этим пользоваться?
Автор: ASE_DAG
Дата сообщения: 01.05.2011 20:22
Alexey87
В смысле? Греп установили, он работает корректно?
Тогда вызываете указанную мною команду в цикле для каждого файла (см. выше, вам такой цикл уже написали).
Автор: Bezzz
Дата сообщения: 01.05.2011 20:24

Цитата:
а как этим пользоваться?

Желательно руками.
Автор: Alexey87
Дата сообщения: 01.05.2011 21:00
ASE_DAG, что-то не работает.
Видимо что-то не так делаю. Что и куда надо прописать?
Автор: ASE_DAG
Дата сообщения: 01.05.2011 21:09
Alexey87
> что-то не работает.
Что не работает?
Автор: Alexey87
Дата сообщения: 01.05.2011 21:17
ASE_DAG, в том то и дело, что не знаю что не работает.
Привожу код bat-файла:
@echo off
setlocal
pushd "C:\html"
for %%i in (*.html) do (
$ grep -Po '<h[1-6].*?>.*?</h[1-6]>' c:\html\0125.html
$ grep -Po '<h[1-6].*?>.*?</h[1-6]>' c:\html\0126.html
$ grep -Po '<h[1-6].*?>.*?</h[1-6]>' c:\html\0127.html
)
popd
echo %title% >> c:\out.txt
Автор: ASE_DAG
Дата сообщения: 01.05.2011 21:38
Alexey87
Блин.

а) Знак доллара — это приглашение шелла (причем у меня, у вас оно скорее всего имеет вид знака больше «>»). Хотя бы немножко критически относитесь к тому, что вам пишут, а не просто копипастите.
б) Если хотите проверить работу Грепа пока без подстановки в цикле (на одном файле), то имеет смысл сделать это в интерактивной командной строке:
>grep -Po '<h[1-6].*?>.*?</h[1-6]>' c:\html\0125.html
Автор: Alexey87
Дата сообщения: 01.05.2011 21:49
ASE_DAG, в командной строке пишется:
Не удается найти указанный файл
Автор: ASE_DAG
Дата сообщения: 01.05.2011 21:57
Alexey87
Проверьте, чтобы директория, где расположен бинарник Грепа, была добавлена в %PATH%.
Автор: Alexey87
Дата сообщения: 01.05.2011 22:00
ASE_DAG, как это проверить?
Автор: ASE_DAG
Дата сообщения: 01.05.2011 22:07
Alexey87
>echo %PATH%
Не?

Но проверять-то и нет особой необходимости, раз не найден, значит не добавлена.
Читайте мою реплику выше так: добавьте директорию, где расположен бинарник Грепа, в %PATH%.
Автор: Alexey87
Дата сообщения: 01.05.2011 22:22
ASE_DAG, все равно не работает.
Наверное что-то не так прописано
Автор: ASE_DAG
Дата сообщения: 01.05.2011 22:26
Alexey87
> все равно не работает.
Что не работает?

> Наверное что-то не так прописано
Вы весьма догадливы.
Автор: king_stiven
Дата сообщения: 02.05.2011 07:54
'<h[1-6].*?>.*?</h[1-6]>'
заменить на
"<h[1-6].*?>.*?</h[1-6]>"
плюс остальные проблемные знаки смотреть
<>&? и т д
Автор: Alexey87
Дата сообщения: 02.05.2011 21:17
Ничего не выходит.
Может есть еще какие-нибудь варианты или код некорректен (см. ниже)?

@echo off
>echo %PATH% >> c:\Program Files\GnuWin32\bin\grep.exe
setlocal
pushd "C:\html"
for %%i in (*.html) do (
>grep -Po "<h[1-6].*?>.*?</h[1-6]>" c:\html\0125.html
>grep -Po "<h[1-6].*?>.*?</h[1-6]>" c:\html\0126.html
>grep -Po "<h[1-6].*?>.*?</h[1-6]>" c:\html\0127.html
)
popd
echo %title% >> c:\out.txt
Автор: ASE_DAG
Дата сообщения: 02.05.2011 21:27
Alexey87
> код некорректен (см. ниже)
Корректен он или нет, я утверждать не могу, но он точно бессмысленен.

Вы работы Грепа на одном файле в интерактивном шелле добились?
Посмотрите на то, что говорил king_stiven о служебных символах. Очень может быть в Винде действительно нужно экранировать «<>&? и т. д.» даже внутри кавычек. Экранирование — оно лишним-то не бывает, проверьте.

Добавлено:
> >echo %PATH% >> c:\Program Files\GnuWin32\bin\grep.exe
А это что за бред? Зачем вам дописывать содержимое %PATH% в конец бинарника?
Это вы хотели отредактировать переменную среды?
Вам это все равно надо сделать перманентно, так что читайте «How To Manage Environment Variables in Windows XP».

Добавлено:
Да, и конечно он некорректен. «>» — это приглашение, а не часть команды, мы с вами на эту тему уже говорили, зачем вы его снова дописали в начало строки?
Автор: Alexey87
Дата сообщения: 02.05.2011 21:57
ASE_DAG, отвечаю на вопросы:

Цитата:
Вы работы Грепа на одном файле в интерактивном шелле добились?

нет

Цитата:
Это вы хотели отредактировать переменную среды?

да, уже реализовал

все равно не работает
что может быть еще не так?
Автор: ASE_DAG
Дата сообщения: 02.05.2011 21:59
Alexey87
> да, уже реализовал
> все равно не работает
Что не работает?
Автор: Alexey87
Дата сообщения: 02.05.2011 22:08
ASE_DAG, не работает ни bat-файл, ни одиночная команда в командной строке
Автор: ASE_DAG
Дата сообщения: 02.05.2011 22:25
Alexey87
> ни bat-файл
Батник вообще пока оставим в покое.

> не работает одиночная команда в командной строке
Что значит «не работает»?
Автор: Alexey87
Дата сообщения: 03.05.2011 06:57

Цитата:
Что значит «не работает»?

при вводе команды в командную строку
grep.exe -po <h[1-6].*?>.*?</h[1-6]> c:\html\0125.html
появляется сообщение:
не удается найти указанный файл
Автор: NIKZZZZ
Дата сообщения: 03.05.2011 07:33
Alexey87

Цитата:
не удается найти указанный файл


Спец. символы надо экранировть.

Код: grep.exe -po ^<h[1-6].*?^>.*?^</h[1-6]^> c:\html\0125.html
Автор: ASE_DAG
Дата сообщения: 03.05.2011 07:53
NIKZZZZ
А звездочку и знак вопроса при отсутствии кавычек не надо?
Автор: NIKZZZZ
Дата сообщения: 03.05.2011 08:29
ASE_DAG

Цитата:
А звездочку и знак вопроса при отсутствии кавычек не надо?

<> - символы перенаправления, они воспринимаются как команда, *? - это обычные символы.

Автор: Alexey87
Дата сообщения: 03.05.2011 08:33
NIKZZZZ, при вводе

Цитата:
grep.exe -po ^<h[1-6].*?^>.*?^</h[1-6]^> c:\html\0125.html

пишет grep.exe: invalid option -- p
дальше что-то непонятное в другой кодировке
Автор: NIKZZZZ
Дата сообщения: 03.05.2011 08:42
Alexey87

Цитата:
пишет grep.exe: invalid option -- p

У меня нет под рукой grep.exe, читай описание.

Автор: NIKZZZZ
Дата сообщения: 03.05.2011 11:00
ASE_DAG
Alexey87
Синтаксис Linux и Windows версий различен.


Код: grep.exe -ri ^<h[1-6].*?^>.*?^</h[1-6]^> c:\html\0125.html
Автор: kosstar1
Дата сообщения: 03.05.2011 14:22
Доброго дня всем!
Буду очень признателен, если кто поможет создать батник который будет запускать приложения только при наличии сетевого соединения, т.е есть коннект, тогда автоматом запускается к примеру tor, privoxy, mozilla и т.д. И так постоянно при каждом соединении. Желательно без дополнительного ПО, а только средствами командной строки.
Автор: wolf0425
Дата сообщения: 03.05.2011 14:38

Цитата:
И так постоянно при каждом соединении.
в смысле - нужно отлавливать моменты установки соединения и чего-то запускать?
Или только один раз при старте батника проверить установлено ли соединение сейчас? так проверить пингуется ли например яндекс - вроде не проблема...
ps: операционка то какая - ХР?

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.