Компьютерный форум 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=264479)

denntl 17-07-2013 14:42 2186043

Открыть файл если есть строка в файле .txt
 
Здравствуйте, перепробовал много разных вариантов. Вобщем есть txt файл, в котором нужно отследить наличие определенной строки, и если она таки существует, открыть файл html.

Пробовал:


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

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

Iska 17-07-2013 17:04 2186106

Что в реальности в «Текст строки»? Почему «goto», а не «start»?

Sphinx114 17-07-2013 17:09 2186112

Код:

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

denntl 17-07-2013 17:22 2186118

Цитата:

Что в реальности в «Текст строки»? Почему «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 2186135

Цитата:

Цитата denntl
Файл не открылся »

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

denntl 17-07-2013 17:48 2186137

Вот что уже вышло:

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

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

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

Sphinx114 17-07-2013 18:09 2186144

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 2186172

Скачал 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 2186181

iconv http://rghost.ru/47487041

denntl 17-07-2013 19:27 2186186

Теперь еще одна интересная задача.

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

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

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

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

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

Iska 18-07-2013 11:34 2186511

Цитата:

Цитата Sphinx114
denntl, кроме как прогнать файл через iconv (сторонняя утилита) не знаю. »

По мне — так проще WSH использовать: всё ж «искаропки».


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

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

denntl 19-07-2013 02:40 2186982

Уже упростил, спасибо!

vova_kansk 02-10-2013 12:29 2227328

а как перименовать или переместить файл в котором встретилась искомая строка


Время: 18:37.

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