[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Модератор форума: Andrey_A, ХарВик, chip642  
Форум » • Total Commander • » Кнопки для Total Commander » ЗАКАЗ КНОПОК
ЗАКАЗ КНОПОК
ХарВикДата: Вторник, 17.04.2012, 21:49 | Сообщение № 1
Генералиссимус

На сайте с: 29.01.2012
Город: Черкассы
Сообщений: 1629
Награды: 18
Репутация: 18
ЗАКАЗ КНОПОК




В этой теме Вы можете высказывать идеи о каких-либо кнопках. Вы можете описать какую хотелось бы иметь кнопку и возможно найдутся те, кто подскажет как её сделать.
Большая просьба чётко описывать задачу, от этого будет зависеть качество её решений


Группа TCIMG в Telegram

.
 
ХарВикДата: Вторник, 20.10.2015, 18:36 | Сообщение № 541
Генералиссимус

На сайте с: 29.01.2012
Город: Черкассы
Сообщений: 1629
Награды: 18
Репутация: 18
good
(А разве она и ещё не продвинута? :) )
 
kfhjxrfДата: Среда, 21.10.2015, 06:41 | Сообщение № 542
Полковник

На сайте с: 09.11.2012
Город: Minsk
Сообщений: 178
Награды: 1
Репутация: 4
Цитата chip642 ()
Переименование выделенных объектов (с регулярными выражениями) - поменять местами два слова, разделённые пробелом

Эта кнопочка сработала. Спасибо большое. А не поможете создать кнопочку для такого примера, где два слова разделены не пробелом, а точкой, к примеру: Т.Устинова
Таких файлов у меня тоже много.
Очень хочется научиться создавать самой кнопки. Читала справку- пока для меня это темный лес. Вот бы обучающий ролик!!!! Моему счастью не было бы предела.


Лариса
 
chip642Дата: Среда, 21.10.2015, 11:35 | Сообщение № 543
Генералиссимус

На сайте с: 24.04.2013
Город: Москва
Сообщений: 1495
Награды: 62
Репутация: 58
kfhjxrf,
Цитата
создать кнопочку для такого примера, где два слова разделены не пробелом, а точкой

Код
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
renms=%L||&&(.*)\.(.*)!!$2.$1
Wcmicons.dll,19
Переименовать выделенные объекты заменив в базовом имени части между точкой

-1

Цитата
Вот бы обучающий ролик!!!!

Боюсь тут одного обучающего ролика маловато будет, да и кнопок уже неимоверное количество, а каких нет мы быстро состряпаем))
 
Andrey_AДата: Среда, 21.10.2015, 12:45 | Сообщение № 544
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
kfhjxrf,
Все ваши задачи изменения имени связаны с регулярными выражениями.
Я уже рекомендовал многим программу RegExp
Она позволяет легко освоить данную тему...
Нужно немного потратить времени для их изучения.

Вышеописанная задача в программе выглядит так:


Если всё правильно, то подставляем поиск и замену в команду:

Код
renms=%L||&&(.*)\.(.*)!!$2.$1


Другая подобная задача выглядит так:


А подстановка в команду так:

Код
renms=%L||&&(.)\.(.)\.(.+)!!$3.$1.$2


В программе есть достаточно примеров, чтобы разобраться:



Если появляются проблемы/вопросы, то регулярные выражения можно обсудить в теме программы RegExp

.


 
kfhjxrfДата: Среда, 21.10.2015, 13:24 | Сообщение № 545
Полковник

На сайте с: 09.11.2012
Город: Minsk
Сообщений: 178
Награды: 1
Репутация: 4
Ребята, спасибо большое. Я попытаюсь разобраться, главное, направление есть, где копать. Ну, а если не осилю, буду к вам обращаться.

Лариса
 
АфиДата: Среда, 21.10.2015, 17:14 | Сообщение № 546
Лейтенант

На сайте с: 25.03.2015
Город: Одесса
Сообщений: 61
Награды: 0
Репутация: 0
А нельзя ли сделать такую кнопку/команду: обработка текстового файла таким образом, чтобы собрать из него все уникальные символы? Чтобы все, присутствующие в нем, помещались только один раз.
Дело в том, что я обрабатываю китайские тексты и там, в отличие от европейских языков, могут быть тысячи уникальных иероглифов. Нужно "сжимать" файл так, чтобы каждый символ (иероглиф) встречался один раз. Поискал в интернете какую-нибудь утилиту, но не нашел. Есть только построчная или пословная дедупликация, но не посимвольная.
 
Andrey_AДата: Среда, 21.10.2015, 22:04 | Сообщение № 547
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
Афи, Любая задача с текстовыми файлами бывает не такая уж простой в объяснении и понимании...
поэтому я всегда прошу файлы ДО и ПОСЛЕ, т.е. исходные и файлы итоговые - то что надо в итоге. Если таковые пришлёте, то будет гораздо проще подумать о реализации.


 
АфиДата: Четверг, 22.10.2015, 10:41 | Сообщение № 548
Лейтенант

На сайте с: 25.03.2015
Город: Одесса
Сообщений: 61
Награды: 0
Репутация: 0
Andrey_A, хотелось бы дедупликацию символов в файле. То есть, в конечном файле каждый символ должен встречаться только один раз. И должны быть только те символы, которые есть в файле-источнике.
Высылаю пару файлов: https://yadi.sk/d/LtvQy5F6jutzB
<SourceFile.txt>
<TargetFile.txt>
В первом файле-источнике — исходный текст. Во втором — только те символы, которые присутствуют в первом файле. Пробелы игнорируются (впрочем, пробел не важен, можно и его обрабатывать). Кодировка UTF-16 LE.


Сообщение отредактировал Афи - Четверг, 22.10.2015, 10:43
 
Andrey_AДата: Воскресенье, 25.10.2015, 20:30 | Сообщение № 549
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
Цитата
хотелось бы дедупликацию символов в файле

Афи, ну вот примерно так:
Для простого понимания приведу ряд примеров командной строки:

1. Разбить посимвольно в массив содержимое буфера обмена:

Код
exect=$var_a=StringSplit(ClipGet(),'''',2)||_ViewValues($var_a)


2. Разбить посимвольно в массив содержимое буфера обмена и удалить дубликаты:

Код
exect=$var_a=StringSplit(ClipGet(),'''',2)||$var_a=_ArrayUnique($var_a)||_ViewValues($var_a)


3. Записать в файл ListSym.txt в активную панель уникальные символы из содержимого буфера обмена
Код
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
exect=$var_a=StringSplit(ClipGet(),'''',2)||$var_a=_ArrayUnique($var_a) asave=var_asym||"%pListSym.txt"||upd<1>||all||
%COMMANDER_PATH%\Wcmicons.dll,1
Записать в файл ListSym.txt в активную панель уникальные символы из содержимого буфера обмена

0
-1


4. Записать в именной файл с приставкой _sym уникальные символы содержимого файла под курсором
Код
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
exect=$var_a=StringSplit(FileRead('%P%N'),'''',2)||$var_a=_ArrayUnique($var_a) asave=var_a||"%P%O_sym.%E"||upd<1>||all||
%COMMANDER_PATH%\Wcmicons.dll,1
Записать в именной файл с приставкой _sym уникальные символы  содержимого файла под курсором

0
-1


5. Вышеописанные примеры показывают логику, а вот возможно итоговый пример:

Записать в в именной файл с приставкой _sym уникальные символы содержимого файла под курсором в кодировке UTF-16 LE 1200, предварительно удалив переносы строк и пробелы
Код
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TCIMG.exe
exect=$var_s=FileRead('%P%N')||$var_s=StringReplace('$var_s',@CRLF,'''')||$var_s=StringReplace('$var_s','~~','''')||$var_a=StringSplit('$var_s','''',2)||$var_a=_ArrayUnique($var_a)||_ArraySort($var_a,0,1) asave=var_a||"%P%O_sym.%E"||upd<1>||all||||code<1>
%COMMANDER_PATH%\Wcmicons.dll,1
Записать в  в именной файл с приставкой _sym уникальные символы содержимого файла под курсором в кодировке UTF-16 LE 1200, предварительно удалив переносы строк и пробелы

0
-1

------------------
Про все функции в команде можно почитать в справке...



 
АфиДата: Понедельник, 26.10.2015, 12:29 | Сообщение № 550
Лейтенант

На сайте с: 25.03.2015
Город: Одесса
Сообщений: 61
Награды: 0
Репутация: 0
Ура! Работает! Спасибо, Андрей! good
Знаете что странно? Сам я не программист, трудно мне это дается. У меня, так сказать, другие достоинства ;) Но искать в интернете, искал. Очень нужно было. Нашел только утилиты для дедупликации строк и слов. Не символов. Когда файл маленький, можно вручную сделать по символу в строке, как в вашем первом примере. Но с большим файлом тяжело. И тут вдруг, не нужно никаких специальных утилит — старая добрая TCIMG сделала это.
Спасибо еще раз большое!
 
ice_daemonДата: Суббота, 31.10.2015, 20:13 | Сообщение № 551
Лейтенант

На сайте с: 01.08.2013
Сообщений: 40
Награды: 0
Репутация: 0
подскажите, пожалуйста
требуется скопировать все файлы (ссылка из буфера или прямо указанная) в Temp, удалить весь мусор (файлы меньше 1 МБ), и перенести\переименовать оставшийся скачанный файл (без расширения) из TEMP, в директорию выше в файл вида Name.exe

bufsr=##http<https://toolslib.net/downloads/finish/1/>||formt<6> downl="%pTemp"||cliplist||pause<1-5>||progres<> delss=PS<"%pTemp">||1||test<0r!!1M//0a!!D>
вот так получилось скачать файл в TEMP, но файл вида bYGfJanO92ieMaBIXJywcxxyZapn823J без расширения, как теперь его из TEMP перенести уровнем выше и переименовать в name.exe
 
Andrey_AДата: Суббота, 31.10.2015, 21:25 | Сообщение № 552
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
Код
теперь его из TEMP перенести уровнем выше и переименовать в name.exe

ice_daemon, поставьте в конце:
Код
moves=PS<"%pTemp">||::!!0!!(.+\\).+\\.+\\?!!$1||##Name.exe||upd<1>


 
ice_daemonДата: Суббота, 31.10.2015, 22:14 | Сообщение № 553
Лейтенант

На сайте с: 01.08.2013
Сообщений: 40
Награды: 0
Репутация: 0
Цитата Andrey_A ()
ice_daemon, поставьте в конце:
[КОД:]
Выделить весь код
moves=PS<"%pTemp">||::!!0!!(.+\\).+\\.+\\?!!$1||##Name.exe||upd<1>


Все почти получилось, только если файл Name.exe уже есть, то создается файл Name.exe_01, а мне бы с заменой, для обновления версии файла
 
Andrey_AДата: Суббота, 31.10.2015, 22:20 | Сообщение № 554
Генералиссимус

На сайте с: 26.01.2012
Город: Сочи, Хоста
Сообщений: 7167
Награды: 139
Репутация: 125
Аверин Андрей
Цитата
мне бы с заменой

Во 2-м параметре поставить 1

[helpquote]Path!!Flag!!RegExp!!Replace. Подпараметры разделяются символами !! Может быть от 1-го (обязательного) до 4-х подпараметров, где:
Path - путь назначения (если в параметрах необходимо использовать путь объекта, то используйте два двоеточия ::).
Flag :
0 - не перезаписывать имеющиеся объекты. Добавление счётчика. (по умолчанию)
1 - перезаписывать имеющиеся объекты.
3 - добавление счётчика к целевому пути, если он существует.
4 - пропустить при совпадении имени объекта.
5 - пропустить, если целевой объект не существует. Не перезаписывать имеющиеся объекты. Добавление счётчика.
6 - пропустить, если целевой объект не существует. Перезаписывать имеющиеся объекты.
[/helpquote]

Код
moves=PS<"%pTemp">||::!!1!!(.+\\).+\\.+\\?!!$1||##Name.exe||upd<1>


.


 
ice_daemonДата: Суббота, 31.10.2015, 23:41 | Сообщение № 555
Лейтенант

На сайте с: 01.08.2013
Сообщений: 40
Награды: 0
Репутация: 0
Цитата Andrey_A ()
moves=PS<"%pTemp">||::!!1!!(.+\\).+\\.+\\?!!$1||##Name.exe||upd<1>

спасибо, все ок
 
Форум » • Total Commander • » Кнопки для Total Commander » ЗАКАЗ КНОПОК
Поиск:

Интеллектуальные права и отказ от ответственности