Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Autorun
Goto page Previous  1, 2, 3 ... , 197, 198, 199  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Loopback



Joined: 07 Sep 2009
Posts: 1592

Post (Separately) Posted: Mon Aug 11, 2025 12:51    Post subject: Reply with quote

AkulaBig
Ясно.

Ну а я установил 24H2, но это ничего не дало (ожидаемо). Видимо, какие-то особенности вашей системы. Код ThreadWatchLang просмотрел, но опять же, нечего подозрительного не вижу. Куда копать в данный момент идей нет.

Могу пока сделать фикс положения, вот только тогда ошибка замаскируется. Или можно выводить окно где-то в углу, чтобы и читалось, и сразу было ясно, что опять вылез косяк.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 424

Post (Separately) Posted: Mon Aug 11, 2025 17:23    Post subject: Reply with quote

Loopback wrote:
Ну а я установил 24H2, но это ничего не дало (ожидаемо)

Очень странно. Попробую еще в Песочнице. Чище оськи не найдешь.
Loopback wrote:
Или можно выводить окно где-то в углу, чтобы и читалось, и сразу было ясно, что опять вылез косяк.

Может просто выводить по центру экрана, а не ТС? И еще ведь не надо забывать, что только эта ошибка у меня автозакрывается. Даже на ТС32.
Back to top
View user's profile Send private message
jentoso



Joined: 20 Dec 2007
Posts: 401

Post (Separately) Posted: Mon Aug 11, 2025 17:35    Post subject: Reply with quote

AkulaBig wrote:
Может просто выводить по центру экрана, а не ТС?

А потом не возникнут проблемы с тем, что у кого-то два и более мониторов и определять куда именно выводить, отлично от центра самого TC?
_________________
TC 11.56 combo, Windows 10 x64
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 424

Post (Separately) Posted: Mon Aug 11, 2025 19:01    Post subject: Reply with quote

Loopback
Попробовал в Песочнице. Никаких изменений. Так что даже представить не могу, почему у вас ошибка не срабатывает. Включите Песочницу. Чудес ведь не бывает. Должно одинаково работать.
jentoso wrote:
А потом не возникнут проблемы с тем, что у кого-то два и более мониторов и определять куда именно выводить, отлично от центра самого TC?

Вообще Винда сама отслеживает вроде-бы, но настройками можно изменить.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1592

Post (Separately) Posted: Mon Aug 11, 2025 21:55    Post subject: Reply with quote

AkulaBig wrote:
Может просто выводить по центру экрана, а не ТС?

AkulaBig wrote:
что только эта ошибка у меня автозакрывается. Даже на ТС32.

Это самое простое, просто тогда будет непонятно, что произошёл сбой. Впрочем, раз окно самозакрывается, то вообще никакой разницы.

В принципе окно у меня тоже иногда закрывалось, но только под x64, это другой, старый недолеченный баг. В 32-битной ни разу. При этом отладочный вывод нормальный, так что это не та проблема.

AkulaBig wrote:
Включите Песочницу.

Песочница не хочет ставиться на гостевой системе. Но в этом, думаю, нет необходимости, потому что система только что была развернута и обновлена, совершенно чистая.

AkulaBig wrote:
Чудес ведь не бывает.

О, ещё как бывают. Иначе бы все баги всегда повторялись.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 424

Post (Separately) Posted: Wed Aug 20, 2025 09:22    Post subject: Reply with quote

Loopback
Как создать переменную в текущем пользователе, а не в текущем процессе? Только через cmd?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1592

Post (Separately) Posted: Wed Aug 20, 2025 11:07    Post subject: Reply with quote

AkulaBig
Переменные окружения пользователя хранятся в разделе реестра "HKEY_CURRENT_USER\Environment". Нужно туда добавить ключ.

В разделе примеров "Разное" в справке есть пример "Добавление каталога в PATH", можно его за основу взять.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 424

Post (Separately) Posted: Wed Aug 20, 2025 13:11    Post subject: Reply with quote

Loopback wrote:
Нужно туда добавить ключ

Я так сделал:
Code:
ShellExec /SW_HIDE /WAIT %COMSPEC% '/c setx OIT_DATA_PATH C:\'

Нормально работает.
Back to top
View user's profile Send private message
yahuu



Joined: 22 Jun 2023
Posts: 35

Post (Separately) Posted: Tue Sep 02, 2025 07:47    Post subject: Reply with quote

Системный формат времени: 2025/09/02

Code:

SetEnv cmonth %"Date('yyyy-MM',now())"   # -->2025-09
SetEnv tday %"Date('yyyy-MM-dd',now())"   # -->2025-09-02

SetEnv cmonth %"Date('yyyy-MM')"   # -->2025/09/02
SetEnv tday %"Date('yyyy-MM-dd')"   # -->2025/09/02
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1592

Post (Separately) Posted: Tue Sep 02, 2025 11:20    Post subject: Reply with quote

yahuu
Да, подтверждаю.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 806

Post (Separately) Posted: Tue Sep 02, 2025 12:04    Post subject: Reply with quote

Loopback
Autorun 2.2.19.1, пример из справки ["Синтаксис" -> "Функции"] не работает?
Code:
Local sysdir
DllCall("GetSystemDirectoryW", "wstr:256", @sysdir, "int", 255)
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1592

Post (Separately) Posted: Tue Sep 02, 2025 20:40    Post subject: Reply with quote

Orion9
В 2.2.19.1 нет, не работает, исправлено в этой.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 806

Post (Separately) Posted: Wed Sep 03, 2025 00:40    Post subject: Reply with quote

Loopback
Вот что значит быстро читать. Просмотрел этот момент. Не ожидал, что будет так много сообщений за время моего отсутствия, пришлось ускориться. Но обновленную версию видел и скачал, просто подумал, что она связана с багофиксами, которые обсуждались, и как-то не вкурил я в эту фразу: "регресс с версии 2.2.17" Laughing

В общем, хотел использовать эту фичу в вызове GetVolumePathNameW, но поскольку такой формат записи не сработал, пришлось откатиться на буфер. Сейчас, думаю, менять уже ничего не буду, так как таким образом останется совместимость с 2.2.19.1

Замутил я тут одну тему под стать возможностям современного Autorun, оказалось, ему вполне по силам - вывести информацию о фрагментации файлов в отдельном наборе колонок и дополнительном окне подсказки. Результатом очень даже доволен.

 autorun.cfg

Код кнопки стандартный. При желании номер команды можно заменить:
Code:
TOTALCMD#BAR#DATA
70400

%COMMANDER_EXE%
Кластеры файла|Ctrl - Скопировать в буфер


-1

Небольшое описание переменных:
FRAG_SHOW - просто глобальная переменная, которая используется внутренне. Ее первоначальное значение ни на что не влияет.
FRAG_LINES - количество строк в подсказке. Т.к. фрагментов может быть сотни и тысячи, размер посказки нужно как-то ограничивать.
FRAG_BUFFER - размер буфера в килобайтах. Это буфер, в который возвращается информация о фрагментах. Но поскольку фрагментов может быть очень много, всё в буфер может не влезть. В таких случаях рекомендуют делать повторные вызовы, но я не стал этим загоняться. При желании можно увеличить буфер, если нужно видеть большее количество записей. 32Кб дают где-то 2000 записей.
FRAG_NUM - если true, то в кастомное поле "Frag" будет выводится только числовой тип данных. По умолчанию это поле строковое и может содержать строку формата "1/3*2", где 1 - число реальных фрагментов, 3 - число записей в MFT, 2 - попадание во второй диапазон.
FRAG_ENTRY - если true, то в кастомное поле "Frag" будет попадать информация о вхождении в диапазон после звездочки.
FRAG_START1 и FRAG_START3 - начало и конец диапазона в кластерном пространстве. Информация о диапазоне также выводится в поле "FragEntry". Удобно, если нужно найти файлы, попадающие в ту или иную область на диске.
Поле "FragNum" содержит информацию только в числовом выражении.

Есть кое-какие ограничения в работе, но о них нужно отдельно написать. Завтра, по возможности, это сделаю.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 806

Post (Separately) Posted: Wed Sep 03, 2025 14:04    Post subject: Reply with quote

Продолжение к вышестоящему посту.

Сейчас вижу, что есть некоторые недоработки, но в целом код рабочий. Это нормально, изначально не ставил задачи сделать всё идельно, хотелось просто посмотреть, что из этого выйдет.

Вообще, хотелось бы иметь инструмент, помогающий при работе с такими программами, как BadNTFS, и чтобы этот инструмент сразу был интегрирован в ТС и чтобы не возникало необходимости прибегать к сторонним утилитам типа DiskView, WinContig или того же Defraggler. Сейчас подсказка выводит информацию в таком виде:
Code:
File: autorun_20250805.zip
Volume: e:\
Sector: 512 bytes
Cluster: 8 sectors
Free: 1288683 Total: 15728698
Fragments: 4 Clusters: 87 Size: 347,64 Kb
-------------------------------------------------
 N     VCN       LCN       Clusters      Size   
-------------------------------------------------
  1        0   15 327 813         9        36 Kb
  2        9   14 170 518        15        60 Kb
  3       24   14 102 396        32       128 Kb
  4       56   12 671 977        31       124 Kb
  5       87            0

Напоминает вывод консольной утилиты от Руссеновича Contig, но у Руссеновича не выводятся сведения о логическом номере кластера - LCN, хотя именно они в первую очередь и нужны при работе с плохими секторами на диске.

Немного об ограничениях. Про буфер уже говорилось. FRAG_BUFFER = 32 может получить информацию только о 2047 записях, т.к. размер буфера ограничен 32Кб. Когда буфера не хватает, функция возвращает код ERROR_MORE_DATA, соответственно в кастомном поле возможно пометить такие фрагменты знаком ">", указывающим, что фрагментов на самом деле больше, т.е. например ">2047". В подсказке это помечается в поле кластеров:
Code:
Fragments: 2047 Clusters: >239430 Size: 7,93 Gb

Чтобы получить правильные сведения о всех фрагментах, необходимо делать повторные вызовы, смещая стартовую точку, но я не стал этим загоняться. Как правило, сильно фрагментированных файлов не так много, и информацию он них можно получить в любой программе-дефрагментаторе, в том же Defraggler.

Еще один момент. Информация о VCN и LCN сохраняется в 64-битный юнион LARGE_INTEGER, который, по идее, надо было собрать назад функцией MakeInt, имеющейся в Autorun, но я не стал этим заморачиваться, считывая пока только старшую часть юниона. Это, как я понял, ограничивает LCN до 4Тб и на очень больших разделах может привести к неправильному отображению чисел.

Иногда в поле попадают такие записи, как "1/3" или "10/42" и т.д. Первое число - количество фрагментов на разделе. Второе - в файловой записи. Вероятно, это следствие работы программ-дефрагментаторов, которые после дефрагментации файла по какой-то причине не вносят изменения в запись, например:
Code:
Fragments: 1/3 Clusters: 9066 Size: 35,41 Mb
-------------------------------------------------
 N     VCN       LCN       Clusters      Size   
-------------------------------------------------
  1        0   19 686 209      3792     14,81 Mb
  2     3792   19 690 001      4832     18,87 Mb
  3     8624   19 694 833       442      1,72 Mb
  4     9066            0

Файл занимает одну сплошную область от 19 686 209 до 19 695 275, но, видимо, раньше он состоял из 3-х фрагментов, сведения о которых так и остались в его записи.

Ну вот пока и все. Для использования в наборе можно использовать поле "Frag", например [=tc.size.bkMGT2]\n[=autorun.Frag]. Для поиска или подсветки файлов можно создать шаблоны поиска, например: autorun.FragNum > 1000 или autorun.FragEntry = 1
Back to top
View user's profile Send private message
A55555



Joined: 06 Feb 2011
Posts: 8

Post (Separately) Posted: Wed Sep 03, 2025 14:40    Post subject: Reply with quote

Здравствуйте.

При помощи данного плагина можно сделать выключение ПК после окончания копирования в TC?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... , 197, 198, 199  Next
Page 198 of 199

 
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


Powered by phpBB © 2001, 2005 phpBB Group