Скрипт обработки содержания *.txt файла
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Скрипт обработки содержания *.txt файла - 2007-12-14 00:34:24.763333
|
|
|
vohakot
Сообщений: 4
Оценки: 0
Присоединился: 2007-12-14 00:19:08.880000
|
Помогите пожалуйста новичку, который в скриптах мало что понимает. Вот такая задача: !. Имеется файл SMSREADL.TXT (прилагается) в который записывается каждое новое СМС сообщение пришедшее на мобильный телефон новой строкой. 2. Необходим скрипт, который анализировал этот текстовый файл и при совпадении 2 условий (номера с которого отправлено СМС и содержание текста СМС) запускал тот или иной (*.bat) файл на исполнение в зависимости от второго условия (содержание текста СМС). Т.е. на номер, с которого отправлено СМС, должен стоять фильтр (от нежелательных гостей), а на текст СМС запуск разных программ и *.bat файлов на исполнение. Заранее, огромное спасибо всем, кто не останется равнодушным к этому посту.
|
|
|
RE: Скрипт обработки содержания *.txt файла - 2007-12-15 15:59:16.760000
|
|
|
Alaget
Сообщений: 330
Оценки: 0
Присоединился: 2007-11-08 15:57:53.170000
|
Сформулируй условия. Написать это лекго и я напишу если ты просто объяснишь что надо конкретно.
|
|
|
RE: Скрипт обработки содержания *.txt файла - 2007-12-15 17:02:10.973333
|
|
|
vohakot
Сообщений: 4
Оценки: 0
Присоединился: 2007-12-14 00:19:08.880000
|
quote:
ORIGINAL: Alaget Сформулируй условия. Написать это лекго и я напишу если ты просто объяснишь что надо конкретно. Попробую объяснить более конкретно. Есть мобильный телефон подключенный к компу и программа (smsread) которая считывает каждое новое СМС сообщение и вписывает его новой строкой в файл SMSREADL.TXT (лежит в каталоге F:\SMS_log\) 14.12.2007 0:07:59 #From=7911ххххххх #Time=07-12-14 00:07:39 [+3] Текст сообщения № 1 14.12.2007 0:09:39 #From=7921ххххххх #Time=07-12-14 00:09:22 [+3] Текст сообщения № 2 14.12.2007 0:12:29 #From=7905ххххххх #Time=07-12-14 00:12:17 [+3] Текст сообщения № 3 Нужно, чтобы сообщения обрабатывались принятые только с заданного одного или максимум трех номеров (допустим, для примера с этого 79602214545) и в зависимости от содержания СМС запускали файлы 01.bat-10.bat (с каталога С:\RUN\). Например. Пришло СМС с номера 79602214545 и содержит команду "!run 01" на компе происходит запуск файла 01.bat и так далее до 10. Ну а если номер не совпадает с тем списком, что заранее записан или СМС не содержит команды, то соответственно ничего не происходит.
|
|
|
RE: Скрипт обработки содержания *.txt файла - 2007-12-15 17:06:45.583333
|
|
|
Alaget
Сообщений: 330
Оценки: 0
Присоединился: 2007-11-08 15:57:53.170000
|
К понедельнику будет.
|
|
|
RE: Скрипт обработки содержания *.txt файла - 2007-12-15 17:09:27.506666
|
|
|
vohakot
Сообщений: 4
Оценки: 0
Присоединился: 2007-12-14 00:19:08.880000
|
quote:
ORIGINAL: Alaget К понедельнику будет. Спасибо огромное! С меня причетается. :)
|
|
|
RE: Скрипт обработки содержания *.txt файла - 2007-12-15 18:54:49.470000
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
quote:
ORIGINAL: vohakot Есть мобильный телефон подключенный к компу и программа (smsread) которая считывает каждое новое СМС сообщение и вписывает его новой строкой в файл SMSREADL.TXT (лежит в каталоге F:\SMS_log\) 14.12.2007 0:07:59 #From=7911ххххххх #Time=07-12-14 00:07:39 [+3] Текст сообщения № 1 14.12.2007 0:09:39 #From=7921ххххххх #Time=07-12-14 00:09:22 [+3] Текст сообщения № 2 14.12.2007 0:12:29 #From=7905ххххххх #Time=07-12-14 00:12:17 [+3] Текст сообщения № 3 Нужно, чтобы сообщения обрабатывались принятые только с заданного одного или максимум трех номеров (допустим, для примера с этого 79602214545) и в зависимости от содержания СМС запускали файлы 01.bat-10.bat (с каталога С:\RUN\). Например. Пришло СМС с номера 79602214545 и содержит команду "!run 01" на компе происходит запуск файла 01.bat и так далее до 10. Ну а если номер не совпадает с тем списком, что заранее записан или СМС не содержит команды, то соответственно ничего не происходит. tail -f SMSREADL.TXT | grep '#From=79602214545' | awk '$7 == "!run" {system ("$8.bat");}' я может где-то в awk поднаврал – редко его пользую, а с мануалом сверяться влом.
|
|
|
RE: Скрипт обработки содержания *.txt файла - 2007-12-16 10:45:57.376666
|
|
|
Alaget
Сообщений: 330
Оценки: 0
Присоединился: 2007-11-08 15:57:53.170000
|
Извини меня пожайлуста много дел появилось. Код надо немного подправить, и доделать попроси кого нибудь, создай тему в компилируемые языки.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ShellAPI;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
List: TStringList;
F: TextFile;
s, nomer: string;
i: integer;
l: boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
List := TStringList.Create;
List.LoadFromFile('C:\RUN\nomera.txt');
Timer1.Enabled := True;
Button1.Enabled := False;
AssignFile(F, 'F:\SMS_log\SMSREADL.TXT');
ReWrite(F);
CloseFile(F);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
AssignFile(F, 'F:\SMS_log\SMSREADL.TXT');
Reset(F);
while not Eof(F) do
begin
Readln(F, s);
if Copy(s, 25, 1) = '=' then
begin
nomer := Copy(s, 26, 11);
l := True;
end
else
begin
nomer := Copy(s, 26, 11);
l := False;
end;
for i:=0 to List.Count-1 do
begin
if List[i] = nomer then
begin
if l = True then
begin
end;
if l = False then
begin
if Copy(s, 67, Length(s)) = '!run 01' then ShellExecute(Handle, nil, 'C:\RUN\01.bat', nil, nil, SW_SHOW);
if Copy(s, 67, Length(s)) = '!run 01' then ShellExecute(Handle, nil, 'C:\RUN\02.bat', nil, nil, SW_SHOW);
end;
end;
end;
//14.12.2007 0:07:59 #From=7911ххххххх #Time=07-12-14 00:07:39 [+3] Текст сообщения № 1
end;
CloseFile(F);
end;
end.
|
|
|
RE: Скрипт обработки содержания *.txt файла - 2007-12-16 18:39:30.743333
|
|
|
vohakot
Сообщений: 4
Оценки: 0
Присоединился: 2007-12-14 00:19:08.880000
|
quote:
ORIGINAL: Alaget Извини меня пожайлуста много дел появилось. Код надо немного подправить, и доделать попроси кого нибудь, создай тему в компилируемые языки.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ShellAPI;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
List: TStringList;
F: TextFile;
s, nomer: string;
i: integer;
l: boolean;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
List := TStringList.Create;
List.LoadFromFile('C:\RUN\nomera.txt');
Timer1.Enabled := True;
Button1.Enabled := False;
AssignFile(F, 'F:\SMS_log\SMSREADL.TXT');
ReWrite(F);
CloseFile(F);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
AssignFile(F, 'F:\SMS_log\SMSREADL.TXT');
Reset(F);
while not Eof(F) do
begin
Readln(F, s);
if Copy(s, 25, 1) = '=' then
begin
nomer := Copy(s, 26, 11);
l := True;
end
else
begin
nomer := Copy(s, 26, 11);
l := False;
end;
for i:=0 to List.Count-1 do
begin
if List[i] = nomer then
begin
if l = True then
begin
end;
if l = False then
begin
if Copy(s, 67, Length(s)) = '!run 01' then ShellExecute(Handle, nil, 'C:\RUN\01.bat', nil, nil, SW_SHOW);
if Copy(s, 67, Length(s)) = '!run 01' then ShellExecute(Handle, nil, 'C:\RUN\02.bat', nil, nil, SW_SHOW);
end;
end;
end;
//14.12.2007 0:07:59 #From=7911ххххххх #Time=07-12-14 00:07:39 [+3] Текст сообщения № 1
end;
CloseFile(F);
end;
end.
ОК. Спасибо еще раз. Теперь думаю будет намного легче все это осуществить.
|
|
|
|
|