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 

Автоматизация переноса атрибутов и времени изменения файлов
Goto page Previous  1, 2, 3, 4, 5, 6 ... 9, 10, 11  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Sep 16, 2012 15:42    Post subject: Reply with quote

LonerD wrote:
тут запрос простейший, сам справлюсь
Справился?
LonerD wrote:
иначе получается две команды - одна для активной, вторая для пассивной панели.
Считаю, что именно так и должно быть. Зачем кликать что-то в окне, если то же самое можно кликнуть на тулбаре, причём в более информативном представлении (иконка/подсказка)?

Подумал насчёт случая с выделенными файлами в пассивной панели. Не сказать, что это юзабильней. Я, например, выделение делаю в последнюю очередь, т.е. в любом случае у меня выбранное будет в активной панели. Если хотите, цепану Хелпер, не проблема (будет параметрический выбор инверсии). Если не надо, то выкладываю сейчас с рекурсией и закончим на этом. Question
Back to top
View user's profile Send private message
LonerD



Joined: 04 Jan 2011
Posts: 1168
Location: Донецк

Post (Separately) Posted: Sun Sep 16, 2012 17:27    Post subject: Reply with quote

Quote:
Справился?

В какой-то мере. InputBox с диалогом: "Введите файл-источник: 1 - в активной панели, 2 - в пассивной".
Каким образом "рисовать окно с кнопками Пассивная/Активная" и присваивать переменной определённое значение при нажатии на одну или вторую кнопку - пока не знаю.

В общем, может кому пригодится.
Строку:
Code:
 File = .Item(0) : List = .Item(1) : Count = .Item(2)

заменить на
Code:
FileA = .Item(0) : File = .Item(1) : List = .Item(2) : Count = .Item(3) : Source = .Item(4)


Перед Set FSO добавить:
Code:
If Source = 0 Then Source = InputBox("Enter Source File or Dir:" & vbNewLine &_
                   "1 - Source file in Target panel" & vbNewLine &_
                    "2 - Source file in Active panel", "Source", 1)
On Error Resume Next
If Source = 2 Then
  File = FileA
  ElseIf Source <> 1 Then WScript.Quit
End If


Параметры запуска:
Code:
' Параметры: %V %T%M %WL <индекс замены> <индекс файла-источника>
' Индекс файла-источника принимает следующие значения:
' 1 - файл-источник - это выбранный файл пассивной панели
' 2 - файл-источник - это выбранный файл активной панели
' 0 - выдаётся запрос на указание файла-источника


Quote:
случая с выделенными файлами в пассивной панели

Мне не надо.
Кстати, а если без Хэлпера, то можно ведь обойтись и nircmd.
Прописать выполнение команды Nircmd sendkeypress tab
перед и после присвоения параметров.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Sep 16, 2012 17:38    Post subject: Reply with quote

Ладно, тогда ждать остальных не будем, добавил рекурсию.
Теперь тебе придётся опять параметры править. Very Happy

LonerD wrote:
Каким образом "рисовать окно с кнопками Пассивная/Активная" и присваивать переменной определённое значение при нажатии на одну или вторую кнопку - пока не знаю.
WSO/HTA.

LonerD wrote:
"Enter Source File or Dir:" & vbNewLine &_
"1 - Source file in Target panel"
Вас-вас? Ихь ферштэе нихьт, ворюбэр гейт ди Рэдэ! Майн Копф эксплодирт!

vbNewLine меняй на L.
Да, и опциональный выбор сам по себе бестолковый. Просто сделай себе вывод в окне, да и всё, а последний параметр убери. Тебе-то зачем плодить то, чем ты не будешь пользоваться?

On Error Resume Next лишнее, и, коли используешь, обнулять нужно обязательно, иначе все ошибки в скрипте будут игнорироваться. И, конечно, лучше не выходить при ошибке ввода, а снова показывать то же окно:
Code:
Do Until Source = 1 Or Source = 2
  Source = InputBox("Допустимые значения ввода:" &L&L& "1  (если источник в активной панели)" &L&L&_
  "2  (если источник в пассивной панели)", "    Присвоение даты и времени выбранным элементам")
  If Trim(Source) = "" Then WScript.Quit
Loop


LonerD wrote:
Кстати, а если без Хэлпера, то можно ведь обойтись и nircmd. Прописать выполнение команды Nircmd sendkeypress tab
перед и после присвоения параметров.
Не понял, как относится эмуляция Tab (которую легко можно сделать штатными средствами) к возможности брать список пассивной панели. Параметры кнопки TC преобразуются ещё до запуска приложения. Так что бесполезно (уже много раз обсуждалось).
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Tue Sep 25, 2012 01:32    Post subject: Reply with quote

Выяснилась такая неприятная вещь: скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает.
Это никак не лечится?
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Sep 25, 2012 09:51    Post subject: Re: Автоматизация переноса атрибутов и времени... Reply with quote

oshizelly wrote:
...Volniy написал замечательную утилитку CopyAttr.exe.... Однако TC за это время научился работать с юникодными именами файлов, а эта утилита - нет...

Сам удивлен, что на харде нашлись таки исходники (для чего оно писалось, я так и не вспомнил). Понимаю, что это нафик никому не нужно, но чисто из спортивного интереса просто переписал все функи на Unicode http://rghost.ru/40561546. Честно говоря, даже не пытался что-то менять в коде (кроме необходимых изменений под юникодность). Если кто решится проверить, сообщите результат. Thanks in advance!
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Tue Sep 25, 2012 11:08    Post subject: Reply with quote

Volniy wrote:
Понимаю, что это нафик никому не нужно,

Просил бы воздержаться от подобных идейно вредных заявлений! Прога нужна партии и народу!

Вот только у неё почти та же беда, о которой я писал постом выше: перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "Ошибка получения атрибутов искодного файла! Ошибка: 2" и "Ошибка установки атрибутов целевого файла! Ошибка: 2"
Или, может, это у меня в системе что-то криво работает?

P.S.
Мой Symantec Security блокирует запуск и жестоко удаляет файл в карантин. Похоже, там внутри какой-то страшный троян. Laughing Зачем использовать некошерные упаковщики?
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Sep 25, 2012 11:28    Post subject: Reply with quote

oshizelly wrote:
перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "Ошибка получения атрибутов искодного файла! Ошибка: 2" и "Ошибка установки атрибутов целевого файла! Ошибка: 2"

Или, может, это у меня в системе что-то криво работает?

Не знаю (Ошибка 2 = Файл не найден). Я ж говорю, что не тестировал. Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так.

PS Файл ничем не упакован. Абсолютно.
PPS Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз. Надо будет посмотреть реализацию разборки параметров командной строки.
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Tue Sep 25, 2012 12:56    Post subject: Reply with quote

Volniy wrote:
Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так.

Это просто. Windows XP, TC 8.01. В региональных настройках OS язык для не-юникодных программ (non-Unicode programs language) - русский? Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты.

Volniy wrote:
Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз.

Попробовал. Таки да, если имя без пробелов, то юникодные имена обрабатываются без проблем. И если с пробелами, но без юникода, то тоже без проблем. То есть, для получения проблемы нужно совпадение обоих условий. К сожалению, это совпадение, как правило, имеет место. Sad

Volniy wrote:
Файл ничем не упакован. Абсолютно.

Ну, тогда не знаю, что им всем не нравится: https://www.virustotal.com/file/73b18298eec36f226013235f6e1668a6e8cf3f8d69073d35006abc3a414dd418/analysis/1348561434/
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Sep 25, 2012 14:41    Post subject: Reply with quote

oshizelly wrote:
скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP).
Не подтверждаю. У меня всё работает (XP/7 x32).
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Tue Sep 25, 2012 15:12    Post subject: Reply with quote

Flasher wrote:
У меня всё работает (XP/7 x32).

Два уточняющих вопроса:
1. В региональных настройках OS non-Unicode programs language - русский?
2. Какие юникодные символы содержатся в имени тестируемых файлов?
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Sep 25, 2012 15:19    Post subject: Reply with quote

1. Да.
2. äüö.jpg - файл, с которого берётся дата.
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Tue Sep 25, 2012 15:34    Post subject: Reply with quote

Flasher wrote:
2. äüö.jpg - файл, с которого берётся дата.

Ну так а я о чём говорю:
Quote:
скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Sep 25, 2012 15:43    Post subject: Reply with quote

oshizelly
Понял. Проблема исключительно nircmd. Тут уже ничего не поделать, кроме как не потревожить автора.
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Tue Sep 25, 2012 16:22    Post subject: Reply with quote

oshizelly wrote:
Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты.

Пробовал-перепробовал. Работает. Может я что неправильно делаю? Wink
Не забываем параметры в кавычки помещать, если содержится пробел в пути и/или имени? Как вообще при тестах у тебя исполняется программа? Из командной строки Тотала?
Back to top
View user's profile Send private message
oshizelly



Joined: 04 Sep 2012
Posts: 52

Post (Separately) Posted: Tue Sep 25, 2012 17:21    Post subject: Reply with quote

Volniy wrote:
Как вообще при тестах у тебя исполняется программа? Из командной строки Тотала?

Из кнопки. Вот код:
Code:
param50=""%p%n" "%t%m""


И потом, почему проблемы вызывает именно сочетание в имени юникод + пробел? А любое из двух условий по отдельности - нет.


Last edited by oshizelly on Wed Sep 26, 2012 11:07; edited 1 time in total
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, 4, 5, 6 ... 9, 10, 11  Next
Page 5 of 11

 
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