WScript.StdOut | WScript.StdIn

Пользователи Windows часто бывают обделены возможностью создания полноценных сценариев с использованием bash, perl или php. Поэтому приходится использовать то что есть. В Windows есть Windows Script. Эта штуковина поддерживает JavaScript или VBScript сценарии. Где-то слышал, что ActivePerl тоже можно. Очень интересно.

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

Оригинальный файл содержит время прохода сотрудника:

007 01.04.08 07:39:59 0 00 Леоненко Александра Владимировна
007 01.04.08 07:41:53 0 00 Шарифов Рустам Тофикович
007 01.04.08 07:42:30 0 00 Емельянова Татьяна Викторовна
007 01.04.08 07:42:37 0 00 Лопухов Дмитрий Владимирович
007 01.04.08 07:43:28 0 00 Власова Елена Александровна
007 01.04.08 07:47:27 0 00 Казакова Екатерина Алексеевна
007 01.04.08 07:47:30 0 00 Черкасова Наталья Юрьевна
007 01.04.08 07:47:47 0 00 Красилов Павел Александрович

Список сотрудников экспортирован из 1С (текст, разделенный табуляцией):

Советникова Наталья Викторовна	Ювелир-монтировщик	0000000028
Сычева Марина Юрьевна	Ювелир-монтировщик	0000000072
Сычугова Наталья Владимировна	Кладовщик на складе ценников	0000000027
Сычугова Татьяна Валерьевна	Контролер по качеству	0000000030
Тарлакова Валентина Валерьевна	Ювелир-полировщик	0000000032
Тымчишин Наталья Васильевна	Кладовщик на складе ценников	0000000060
Упорова Татьяна Ивановна	Уборщица	0000000063
Фомина Ирина Николаевна	Ювелир-монтировщик	0000000059

Задача: Преобразовать файл для удобной загрузки в mysql. Выходной файл должен быть следующего вида:

2008-04-01 07:39:59	16
2008-04-01 07:41:53	54
2008-04-01 07:42:30	13
2008-04-01 07:42:37	44
2008-04-01 07:43:28	0
2008-04-01 07:47:27	6
2008-04-01 07:47:30	28
2008-04-01 07:47:47	60

Дата в формате YYYY-MM-DD hh:mm:ss и вместо ФИО — табельный номер

Очень просто выполнить такую операцию используя объект WScript.StdIn

var cin = WScript.StdIn;
var input = cin.ReadAll();

Теперь в input содержится содержимое стандартного ввода. Отправить файл в стандартный ввод можно выполнив команду
cscript //nologo script.js < eventlog.txt
cscript вывалит результат работы в стандартный поток вывода. Не забыть перенаправить этот вывод в файл.
cscript //nologo script.js < eventlog.txt > outfile.txt

Остается только загрузить выходной файл в mysql.
load data local infile 'outfile.txt' into table `eventlog` character set cp1251 lines terminated by '\r\n';

Скачать архив с кодом

There are no comments on this post

Leave a Reply

You must be logged in to post a comment.