Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите с findstr

Ответить
Настройки темы
CMD/BAT - [решено] Помогите с findstr

Пользователь


Сообщения: 66
Благодарности: 0

Профиль | Отправить PM | Цитировать


Доброго времени суток! Недавно столкнулся с проблемой: с помощью wget я качаю страницу с http://ip-whois.net/ip_geo.php. После того как я скачал страницу, мне надо найти строку в файле. С помощью простой команды "findstr" я могу найти строку, которая мне надо, а вот для того чтобы занести найденную строку в переменную я использую:

for /F "delims=xxx" %%a in ('findstr "UKRAINE" ip_geo.php') do set a=%%a

С другими файлами все прекрасно работает, а вот в случае с поиском строки "UKRAINE" просто один раз мигнула консоль и все. Вот сам код:

@echo off
for /F "delims=xxx" %%a in ('findstr "UKRAINE" ip_geo.php') do set a=%%a
echo %a%
pause

То есть мне надо чтобы показывало переменную, а не закрывалось окно. С простым findstr все работает. Заранее спасибо!

Отправлено: 21:05, 27-10-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


dima05605, упакуйте полученный файл «ip_geo.php» с «UKRAINE» архиватором и выложите сюда.

Отправлено: 21:27, 27-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 66
Благодарности: 0

Профиль | Отправить PM | Цитировать


Залил на rghost)

http://rghost.ru/41194980

Немного поковырялся, теперь находит UKRAINE, но в переменную записывает не слово, а букву t. Не вижу связи между ними.

Отправлено: 21:41, 27-10-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


dima05605, либо перестаньте называть пакетные файлы именами команд («findstr.bat»), либо научитесь писать полные имена (и, возможно, пути) у команд: «findstr.exe».

Отправлено: 22:43, 27-10-2012 | #4


Пользователь


Сообщения: 66
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ээ, немного не понял)

Отправлено: 00:19, 28-10-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Вы назвали пакетный файл именем «findstr.bat». Внутри этого пакетного файла Вы вызываете его же:
Цитата dima05605:
Код: Выделить весь код
for /F "delims=xxx" %%a in ('findstr "UKRAINE" ip_geo.php') do set a=%%a
а отнюдь не приложение «%SystemRoot%\System32\findstr.exe». В результате Вы получаете теоретически бесконечную рекурсию — до переполнения.

Избежать этой ошибки можно было двумя путями:
Цитата Iska:
…либо перестаньте называть пакетные файлы именами команд («findstr.bat»), либо научитесь писать полные имена (и, возможно, пути) у команд: «findstr.exe». »
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:50, 28-10-2012 | #6


Пользователь


Сообщения: 66
Благодарности: 0

Профиль | Отправить PM | Цитировать


Переименовал на poisk.bat и написал туда

for /F "delims=xxx" %%a in ('findstr.exe "UKRAINE" ip_geo.txt') do set a=%%a
echo %a%

выводит не UKRAINE, а букву t

Отправлено: 13:55, 28-10-2012 | #7


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


dima05605,
А зачем тебе такие разделители "ххх"? На примере из твоего архива:
Код: Выделить весь код
@echo off
setlocal
1>nul chcp 1251

for /f "tokens=2 delims=:<" %%i in ('findstr "UKRAINE" ip_geo.txt') do call:set %%i
echo %a%

1>nul (chcp 866 & pause)

goto:eof

:set
set "a=%1"
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:10, 28-10-2012 | #8


Пользователь


Сообщения: 66
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо, последний код работает, но при поиске русских слов пишет:

Режим вывода команд на экран (ECHO) отключен.

Кто-то знает как исправить данную проблему?

Отправлено: 15:34, 28-10-2012 | #9


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


dima05605, не раз сталкивался с такой проблемой. Попробуй заменить findstr на find. Findstr.exe походу испытывает трудности с кириллицей.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:43, 28-10-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Помогите с findstr

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[Ну помогите же человеку, а? :)] Помогите с конкурсом HTML64 Тест-форум 0 29-06-2012 10:33
CMD/BAT - [решено] помогите скачал себе этот вирус помогите его разблокировать orell Скриптовые языки администрирования Windows 2 05-05-2012 15:45




 
Переход