AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Помогите написать скрипт
Goto page Previous  1, 2, 3 ... , 19, 20, 21  Next
 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
YuS



Joined: 15 Sep 2013
Posts: 432

PostPosted: Sat May 14, 2016 2:09 am    Post subject: Reply with quote

FeyFre wrote:
дык перенос и таб - печатные. Управляющие - да, но печатные Smile

1. Всегда предпочитаю вместо критиканства, если, конечно, есть уверенность и знания, предложить конструктив.
2. Показан способ, а детали можно корректировать.
3. Не вижу уточняющих вопросов от задавшего вопрос.
4.
Quote:
Печатные символы — элементы набора символов, имеющие графическое представление, например в виде значка на бумаге или определённого рисунка на экране. Примерами печатных символов являются буквы, цифры, знаки препинания и псевдографические символы.

Вообще говоря, печатный символ это такой символ, при получении которого головка АЦПУ должна изобразить нечто на бумаге, после чего передвинуться на одну позицию вправо. Печатные символы противопоставляются управляющим символам, на которые устройства вывода текста должны реагировать иначе.

Т.е. исторически печатные символы не включают в себя управляющие и если они противопоставляются, то...
Back to top
View user's profile Send private message
xneo



Joined: 16 May 2016
Posts: 3

PostPosted: Tue May 17, 2016 1:32 am    Post subject: Reply with quote

Доброго времени суток.
Есть ли возможность в скрипте брать данные из одного места в документе (после определенной комбинации символов) и подставлять в другое?
Вот для примера документ:
adasda=213
лотлдот=35
sss=
тексттексттекст
тексттексттексттексттекст
pppp=999
-------------------------Конец документа---------------------------

Нужно взять данные (999) после pppp= и подставить их после sss= что бы получилось:
adasda=213
лотлдот=35
sss=999
тексттексттекст
тексттексттексттексттекст
pppp=
-------------------------Конец документа---------------------------
Back to top
View user's profile Send private message
opk44



Joined: 16 Jan 2010
Posts: 596

PostPosted: Tue May 17, 2016 11:44 am    Post subject: Reply with quote

xneo
Этот скрипт уже написан и называется "SearchReplace.js". Аналог вашего случая описан и решён тут

What: (sss=)([\s\S]*?)(pppp=)(\d+)
With: $1$4$2$3
Select: Regular expressions

Как-то так.
Back to top
View user's profile Send private message
xneo



Joined: 16 May 2016
Posts: 3

PostPosted: Wed May 18, 2016 1:56 am    Post subject: Reply with quote

Спасибо. Но задача немного иная. У меня есть уже скрипт который в файле заменяет часть строк, но помимо замены нужно сделать перемещение данных как описано выше.
Может быть "SearchReplace.js" можно вызывать из моего скрипта с параметрами что и чем нужно заменить без создания диалоговых окон?
Диалоговые окна не нужны. предполагается пакетная обработка файлов.
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1928
Location: Poland

PostPosted: Wed May 18, 2016 5:08 am    Post subject: Reply with quote

xneo
Code:
var sText;
if (AkelPad.TextFind(0, "(?<=^sss=).*?$", 0x00280001 /*FRF_BEGINNING|FRF_REGEXP|FRF_DOWN*/) >= 0)
{
  if (AkelPad.TextFind(0, "(?<=^pppp=).*?$", 0x00280001 /*FRF_BEGINNING|FRF_REGEXP|FRF_DOWN*/) >= 0)
  {
    sText = AkelPad.GetSelText();
    AkelPad.ReplaceSel("");
    AkelPad.TextFind(0, "(?<=^sss=).*?$", 0x00280001 /*FRF_BEGINNING|FRF_REGEXP|FRF_DOWN*/);
    AkelPad.ReplaceSel(sText);
  }
}
Back to top
View user's profile Send private message
xneo



Joined: 16 May 2016
Posts: 3

PostPosted: Wed May 18, 2016 8:44 am    Post subject: Reply with quote

Thank You!
Back to top
View user's profile Send private message
KDJ



Joined: 06 Mar 2010
Posts: 1928
Location: Poland

PostPosted: Wed May 18, 2016 6:27 pm    Post subject: Reply with quote

xneo
Another version (shorter and faster):
Code:
if (AkelPad.TextFind(0, "(^sss=).*?$(.*?^pppp=)(.*?$)", 0x00280001 /*FRF_BEGINNING|FRF_REGEXP|FRF_DOWN*/) >= 0)
  AkelPad.TextReplace(0, "(^sss=).*?$(.*?^pppp=)(.*?$)", "\\1\\3\\2", 0x00480001 /*FRF_SELECTION|FRF_REGEXP|FRF_DOWN*/, 0);
else if (AkelPad.TextFind(0, "(^pppp=)(.*?$)(.*?^sss=).*?$", 0x00280001 /*FRF_BEGINNING|FRF_REGEXP|FRF_DOWN*/) >= 0)
  AkelPad.TextReplace(0, "(^pppp=)(.*?$)(.*?^sss=).*?$", "\\1\\3\\2", 0x00480001 /*FRF_SELECTION|FRF_REGEXP|FRF_DOWN*/, 0);
Back to top
View user's profile Send private message
Lenchik



Joined: 10 Jan 2011
Posts: 366

PostPosted: Sun Jul 10, 2016 8:57 pm    Post subject: Reply with quote

Запрос на скрипт.

По выделенной в файле дате (в разных форматах Insertdate.js или по маске insertDateTemplateExample.js) устанавливать дату создания или изменения файла (в текущей вкладке).

Как возникла идея:
Понадобилось тут у eml файлов поустанавливать дату из его содержимого. Пока буду врукопашную, но вообще хотелось бы автоматизировать.
Back to top
View user's profile Send private message Visit poster's website
Skif_off



Joined: 20 Oct 2013
Posts: 1110

PostPosted: Mon Jul 11, 2016 6:40 am    Post subject: Reply with quote

Lenchik
EML New?
Back to top
View user's profile Send private message
Lenchik



Joined: 10 Jan 2011
Posts: 366

PostPosted: Tue Jul 12, 2016 5:15 pm    Post subject: Reply with quote

Skif_off
Спасибо, наверное подойдёт, в следующий раз опробую.
Back to top
View user's profile Send private message Visit poster's website
Kley



Joined: 28 Mar 2015
Posts: 202
Location: Russia

PostPosted: Thu Jul 14, 2016 4:23 am    Post subject: Reply with quote

Lenchik
Если Вы пользуетесь Total Commander, то:
1.
Ctrl+Q - просмотреть файл, найти нужную дату;
Меню Файлы->Изменить атрибуты... - изменяете дату на нужную (там можно создать шаблон).
2. Может быть Вы, как и я таскаете с собой NirCmd.exe:
Ком. строка: nircmd.exe setfiletime "c:\temp\myfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56" (creation time and modified time);

В AkelPad (на скорую руку, без проверки существования NirCmd.exe):
FileCreateModifiedTimeChange.js:

Code:
// Arguments:
// -NirCmdPath="NirCmd\Path\NirCmd.exe"

var pNirCmdPath = AkelPad.GetArgValue("NirCmdPath", "");
var pEditFile = AkelPad.GetEditFile(0);
var pDate;
if (pEditFile && pNirCmdPath)
{
  if (pDate = AkelPad.InputBox(AkelPad.GetMainWnd(), "Изменение даты\\время", "Формат:\n24-06-2003 17:57:11;\n24/06/2003 17:57:11\n24/06/2003", "24/06/2003 17:57:11"))
    AkelPad.Exec('"' + pNirCmdPath + '" setfiletime "' + pEditFile + '" "' + pDate + '" "' + pDate + '"');
}



В AkelPad (без NirCmd.exe):
FileModifiedTimeChange.js:

Code:
var pEditFile;
var pDate;
if (pEditFile = AkelPad.GetEditFile(0))
{
  if (pDate = AkelPad.InputBox(AkelPad.GetMainWnd(), "Изменение даты\\время", "Формат:\n24.06.2003 17:57:11;\n24/06/2003 17:57:11\n24.06.2003", "24/06/2003 17:57:11"))
  {
    var pFileDir = AkelPad.GetFilePath(pEditFile, 1 /*CPF_DIR*/);
    var pFileName = AkelPad.GetFilePath(pEditFile, 2 /*CPF_FILENAME*/);
    var oShell = new ActiveXObject("Shell.Application");
    var oFolder = oShell.NameSpace(pFileDir);
    var oFolderItem = oFolder.ParseName(pFileName);
    oFolderItem.ModifyDate = pDate;
  }
}



p.s. Плагин "EML New" не пробовал. Может быть, с ним все в 1000 раз лучше и проще.
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 1110

PostPosted: Thu Jul 14, 2016 9:05 pm    Post subject: Reply with quote

Kley
Где же здесь автоматизация? Smile AkelPad.InputBox() не сильно отличается от всё той же ручной модификации: смотрите сюда, вводите туда Smile Вот взять выделенную строку
Code:
Date: Thu, 03 Nov 2005 13:42:39 +0300

распарсить и обновить отметки дат файла... (Думается, есть смысл менять все три.)

Поэтому плагин + файловый менеджер типа ТС предпочтительнее: плагин будет вытягивать дату, а файловый менеджер пакетом обработает всю пачку (Файл/Изменить атрибуты... в ТС).

P.S. DC, кажется, этого не умеет или не нашёл Sad, напишу в хотелки.
Back to top
View user's profile Send private message
Kley



Joined: 28 Mar 2015
Posts: 202
Location: Russia

PostPosted: Fri Jul 15, 2016 8:34 am    Post subject: Reply with quote

Skif_off
Буду отбиваться Smile
Quote:
Вот взять выделенную строку
Code:
Date: Thu, 03 Nov 2005 13:42:39 +0300

распарсить

Такую строку - да, легко, и парсить не надо. А если:
Lenchik wrote:
в разных форматах Insertdate.js или...

Как парсить январь, січень или ינואר (иврит)?
Quote:
есть смысл менять все три

Lenchik wrote:
устанавливать дату создания или изменения файла

Quote:
плагин + файловый менеджер типа ТС предпочтительнее

Lenchik wrote:
По выделенной в файле дате... (в текущей вкладке).

Kley wrote:
Плагин "EML New" не пробовал. Может быть, с ним все в 1000 раз лучше и проще.

Lenchik
Простите пожалуйста. Просто хотел помочь, чем мог. Ждем профи?
Back to top
View user's profile Send private message
Skif_off



Joined: 20 Oct 2013
Posts: 1110

PostPosted: Fri Jul 15, 2016 11:49 am    Post subject: Reply with quote

Kley wrote:
Буду отбиваться Smile

От чего? Smile Веду речь о пакетной обработке:
Lenchik wrote:
Понадобилось тут у eml файлов поустанавливать дату из его содержимого. Пока буду врукопашную, но вообще хотелось бы автоматизировать.

Ещё варианты для иных форматов: Script Content Plugin (только х32), WinScript Advanced, PCREsearch
Kley wrote:
Как парсить январь, січень или ינואר (иврит)?

Обычно стандартизировано, если речь о конкретном формате или пачке файлов. Для локальных вариантов - GetDateFormat?
Kley wrote:
Quote:
есть смысл менять все три

Lenchik wrote:
устанавливать дату создания или изменения файла

Обе даты используются для сортировки в файловых менеджерах, что странно, да? Smile К тому же с NirCmd вы меняете и то и другое вместо или, только добавить ещё
Code:
+ '" "' + pDate + '"'

Так красивее Smile
Kley wrote:
Quote:
плагин + файловый менеджер типа ТС предпочтительнее

Lenchik wrote:
По выделенной в файле дате... (в текущей вкладке).

Тем не менее, веду речь о пакетной обработке вместо врукопашную.
Kley wrote:
Ждем профи?

Рефери? Smile Секундантов? Smile Вариант с NirCmd забрал, спасибо.
Back to top
View user's profile Send private message
Kley



Joined: 28 Mar 2015
Posts: 202
Location: Russia

PostPosted: Fri Jul 15, 2016 3:16 pm    Post subject: Reply with quote

Skif_off
Quote:
Рефери? Секундантов?

Программеров Smile
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Goto page Previous  1, 2, 3 ... , 19, 20, 21  Next
Page 20 of 21

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group