Войти

Показать полную графическую версию : [решено] Открыть файл если есть строка в файле .txt


denntl
17-07-2013, 14:42
Здравствуйте, перепробовал много разных вариантов. Вобщем есть txt файл, в котором нужно отследить наличие определенной строки, и если она таки существует, открыть файл html.

Пробовал:


findstr /r /c: "Текст строки" E:\17-07-2013.txt >nul && goto C:\Users\Admin\Desktop\file.html

Заранее спасибо.

Iska
17-07-2013, 17:04
Что в реальности в «Текст строки»? Почему «goto», а не «start»?

Sphinx114
17-07-2013, 17:09
findstr /r /c:"^Текст строки$" E:\17-07-2013.txt >nul && start "" notepad C:\Users\Admin\Desktop\file.html
^ и $ символы начала и конца строки, без них будет искать данный кусок в строке
файл откроется в блокноте, без notepad - в браузере по умолчанию

denntl
17-07-2013, 17:22
Что в реальности в «Текст строки»? Почему «goto», а не «start»?

Текст: "Сделан выбор"

findstr /r /c:"^Текст строки$" E:\17-07-2013.txt >nul && start "" notepad C:\Users\Admin\Desktop\file.html

Попробовал код, вводил в ручную в cmd. Файл не открылся, пробовал без notepad, нужен вызов в браузере.

Sphinx114
17-07-2013, 17:44
Файл не открылся »
Батник и E:\17-07-2013.txt в 866 кодировке? Видимо файл у вас в 1251 кодировке. Если так, то надо подумать.

denntl
17-07-2013, 17:48
Вот что уже вышло:

Прописывая код вручную в cmd (без файла батника), я поставил поиск числа 123 в файле - так заработало. Но при поиске русских слов - не находит.

Файл, который анализируется на наличие слов имеет кодировку ютф-8.

Пересохранил этот самый файл в кодировку 866 - заработало. Но можно ли обойти это пересохранение?

Sphinx114
17-07-2013, 18:09
denntl, кроме как прогнать файл через iconv (сторонняя утилита) не знаю.
iconv -cs -f utf-8 -t cp866 E:\17-07-2013.txt | findstr /c:"Сделан выбор" && start "" C:\Users\Admin\Desktop\file.html

denntl
17-07-2013, 19:08
Скачал iconv.dll, переместил в System32, в SysWOW64 ввожу в cmd - не реагирует

Работает:

win_iconv -f UTF-8 -t cp866 "E:\17-07-2013.txt" |>nul find /i "Текст строки" && start "" "C:\Users\Admin\Desktop\file.html"

Sphinx114
17-07-2013, 19:19
iconv http://rghost.ru/47487041

denntl
17-07-2013, 19:27
Теперь еще одна интересная задача.

Есть тот же txt файл логов, в котором циклически добавляются строки, типа:

Запуск программы. числоX
Программа числоХ. Число Х
Запуск программы. числоX
Программа числоХ. Число Х
Запуск программы. числоX
Программа числоХ. Число Х

Там где Х - это переменное значение.

Можно ли при появлении Новой строки "Программа числоХ. Число Х" с произвольными значениями Х, копировать эту строку в конец второго файла и открывать его? start "" "C:\Users\Admin\Desktop\file.html"

Нужно так делать в том случае, если файл изменился (добавлись строки), и брать только последнюю строку.

Iska
18-07-2013, 11:34
denntl, кроме как прогнать файл через iconv (сторонняя утилита) не знаю. »
По мне — так проще WSH использовать: всё ж «искаропки».

denntl, можно, если «тот же txt файл логов» не держится постоянно открытым. Но нагрузка будет большая, разве что работать с текстовым файлом как с базой данных или, например, LogParser'ом.

Смысл сего действа в чём?

denntl
19-07-2013, 02:40
Уже упростил, спасибо!

vova_kansk
02-10-2013, 12:29
а как перименовать или переместить файл в котором встретилась искомая строка




© OSzone.net 2001-2012