Возможна ли консольная работа с AkelPad?

Russian main discussion
  • Author
  • Message
Offline
Posts: 6
Joined: Wed Jul 14, 2010 2:12 pm

Возможна ли консольная работа с AkelPad?

Post by bzmn »

Заметил одну интересную особенность - AkelPad может работать с заблокированными файлами совершенно непринужденно. Очистить/изменить/сохранить - всё это он делает без какого-либо облома. Может, я плохо искал, но я не смог найти ни одного похожего редактора или способа сделать это (отредактировать используемый другим приложением файл).

Дело в том, что мне переодически надо очищать один такой файл, потому что его объемы достигают очень больших размеров, в то время как в него пишет нужная мне программа, остановка которой для меня критична, но при это мнужно держать определенный размер файла. Возможно ли как-то через командную строку научить AkelPad открывать файл, очищать его содержимое, сохранять. Из командной строки - потому что мне надо автоматизировать данный процесс.

Руками я уже проверил - именно этот тип файлов, заблокированный данным приложением, АкелПад легко очищает/сохраняет. Не ожидал, но это здорово! Как бы только делать это авматически? :)

FAR данный файл не открывает в режиме редактирования, обычный виндовый блокнот не дает сохранять, а банальная команда echo text > file говорит о занятости данного файла.

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

P.S. На самом деле, говоря о большим объемах - я подразумеваю относительную величину (в мегабайт-два) - меня не обламывает количество занятого пространства как таковое, но дело в том, что анализ содержимого данного файла также переодически производит другое приложение, и когда объемы превышают определенные размеры - это становится приличный удар по системе.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Отсюда:
Instructor wrote:Добавлено: возможность использования методов /OpenFile(), /SaveFile(), /Command(), /Call(), /Exec(), /Font(), /Recode(), /Insert() в командной строке. А также добавлены параметры /L+ и /L- для тихого ответа на сообщение о потере символов в указанной кодировке.
Работа видится мне примерно так:
- написать батник, работающий с АкелПадом или скрипт;
- заюзать вышенаписанное из какой-то внешней, постоянно висящей в памяти, проги типа "Планировщика заданий", но которая позволяет периодически выполнять какие-то настраиваемые действия (в данном случае - запускать скрипт).

Offline
Posts: 6
Joined: Wed Jul 14, 2010 2:12 pm

Post by bzmn »

Спасибо большое за оперативный и толковый ответ. Но без образцов совершенно не понимаю данных команд.

akelpad.exe /OpenFile text.txt /command (какая-то команда с функцией очистки?) /SaveFile text.txt. Как-то так?

Вопрос автоматизации запуска батника - совершенно не проблема. Это мой головняк.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Всегда рад :)
bzmn wrote:akelpad.exe /OpenFile text.txt /command (какая-то команда с функцией очистки?) /SaveFile text.txt. Как-то так?
Думаю да. Хотя я сам не видел пока примеров...(

По аналогии с другими плагами могу предположить, что очистка будет Insert(""), но оно заменит пустотой всё содержимое... Как же оставить там что-нибудь по объёму - не знаю. Возможно как-то через Call() вызвать какой-нибудь скрипт...

Кстати в AkelHelp-Rus.htm есть кое-какое описание!

Если через /Call("Scripts::Main", 1, "MyScript.js", fullfilename), то тогда наверное можно обойтись без /OpenFile и /SaveFile, это всё можно будет сделать внутри.

Как получить полный путь к файлу читайте про аргументы и см. примеры в теме Scripts collection по слову Arguments.

Offline
Site Admin
Posts: 6311
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

bzmn
В разрабатываемой 4.4.6 исправил ошибку метода /SaveFile(). С этой версией попробуйте так:

Code: Select all

AkelPad.exe /SaveFile("C:\File.txt", 1251, 0) /Quit
Заместо

Code: Select all

echo.>C:\File.txt
Кстати примеры по использованию есть в AkelHelp-Rus.htm.

Offline
Posts: 6
Joined: Wed Jul 14, 2010 2:12 pm

Post by bzmn »

А-фи-геть! Спасибо, спасибо большущее!

Работает.

А где у вас страница с donate? Или просто ЯД номер скажите.

И всё-таки, каким образом ваше приложение умудряется перезаписывать заблокированный файл?

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

bzmn wrote:Работает.
Если не трудно, положите скрипт (если всё-таки писали скрипт) в тему Scripts collection.

И какую прогу использовали для вызова скрипта?

Offline
Posts: 6
Joined: Wed Jul 14, 2010 2:12 pm

Post by bzmn »

VladSh, слушай, да ничего оригинального не использовал. Просто заюзал то, что сказал инструктор:

AkelPad.exe /SaveFile("C:\File.txt", 1251, 0) /Quit

Вот это команда, выполненная из командной строки Windows очищает указанный файл по указанному пути (в моём случай путь и название файла, естественно, другие). Выполняются команды переодически - их вызывает батник, выполняющий функции совершенно специфичные и личные. Переодичность определяется совершенно иными процедурами, посвещать в которые не имеет смысла.

Видимо, команда просто создает файл, по умолчанию пустой, который перезаписывает нужный мне файл. ЕЩЕ РАЗ ПОВТОРЮСЬ - ДАЖЕ ЗАБЛОКИРОВАННЫЙ СИСТЕМОЙ! это важно.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

bzmn, ясно, спасибо) здорово!))

Имел ввиду: какую прогу используешь для организации "периодичности" вызова батника?

Offline
Posts: 6
Joined: Wed Jul 14, 2010 2:12 pm

Post by bzmn »

VladSh wrote:bzmn, ясно, спасибо) здорово!))

Имел ввиду: какую прогу используешь для организации "периодичности" вызова батника?
Да обычный BAT-ник, выполняющий через каждые 5 секунд анализ содержимого лога от другой программы (ищет определенной содержимое, сигнализирующее об ошибки - как следствие нужные мне действия). Вот это другая программа - дрянь, в которой не настраивается ограничение по размеру лога. И акелпад меня спас!

В общем-то, если тебе так важно содержимое, то алгоритм примерно такой:

:begin
проверка=проверка+1
если проверка равно 1000 - очищаем file.txt через акелпад и обнуляем проверку
иначе C:\delay.exe 5000 s
find "error" file.txt
если содержимое не найдено - goto begin
иначе ACTION!

под последним подразумеваю совершенно специфичные функции. думаю, нафик никому не нужно.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Алгоритм - то такое...)
bzmn wrote:Да обычный BAT-ник, выполняющий через каждые 5 секунд
Мне было интересно, что за прога позволяет запускать батник каждые 5 секунд?? ))
bzmn wrote:delay.exe
Что это за прога?

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Мне было интересно, что за прога позволяет запускать батник каждые 5 секунд?? ))
Для настройки периодов запуска пользуем:
С коммандной строки:
C:\WINDOWS\SYSTEM32\AT.EXE
Либо в панели управления:
"Назначенные заданий"
Для того что бы расписание начало работать делаем в командной строке:

Code: Select all

SC CONFIG SCHEDULE START= AUTO
SC START SCHEDULE
Что это за прога?
Скорее всего самописная прога, которая ничего не делает заданное время. В принципе с достаточно хорошей точностью можно воспользоваться финтом ушами

Code: Select all

ping -w XXXX -n 1 127.255.255.255
, где XXXX - время в миллисекундах ожидания. Атомной точности конечно не даст, но её и не нужно, особенно на больших промежутках времени.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre, спасибо!

Мне тут это стало интересно...
По "Планировщику": Win FAQ; ещё нарыл вот такие програмульки: xStarter, nnCron.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

OFFTOP:
ещё нарыл вот такие програмульки: xStarter, nnCron.
Ничуть не мощнее Планировщика. Ну разве что crontab понимает, что по сути фич не добавляет(ибо дайте мне хотя-бы один пример crontab без изменений годный для nix и Win)

Offline
Posts: 35
Joined: Mon Jun 15, 2009 3:46 pm

Post by ccaid »

в каком-то серверном ресурските, если мне не изменяет склероз, есть программа sleep, которая принимает из ком. строки количество секунд, которое ей надо перекурить до завершения.
Post Reply