View previous topic :: View next topic |
Author |
Message |
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Sep 16, 2012 15:42 Post subject: |
|
|
LonerD wrote: | тут запрос простейший, сам справлюсь | Справился?
LonerD wrote: | иначе получается две команды - одна для активной, вторая для пассивной панели. | Считаю, что именно так и должно быть. Зачем кликать что-то в окне, если то же самое можно кликнуть на тулбаре, причём в более информативном представлении (иконка/подсказка)?
Подумал насчёт случая с выделенными файлами в пассивной панели. Не сказать, что это юзабильней. Я, например, выделение делаю в последнюю очередь, т.е. в любом случае у меня выбранное будет в активной панели. Если хотите, цепану Хелпер, не проблема (будет параметрический выбор инверсии). Если не надо, то выкладываю сейчас с рекурсией и закончим на этом. |
|
Back to top |
|
|
LonerD
Joined: 04 Jan 2011 Posts: 1169 Location: Макеевка
|
(Separately) Posted: Sun Sep 16, 2012 17:27 Post subject: |
|
|
В какой-то мере. 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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Sep 16, 2012 17:38 Post subject: |
|
|
Ладно, тогда ждать остальных не будем, добавил рекурсию.
Теперь тебе придётся опять параметры править.
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 |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Tue Sep 25, 2012 01:32 Post subject: |
|
|
Выяснилась такая неприятная вещь: скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает.
Это никак не лечится? |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Sep 25, 2012 09:51 Post subject: Re: Автоматизация переноса атрибутов и времени... |
|
|
oshizelly wrote: | ...Volniy написал замечательную утилитку CopyAttr.exe.... Однако TC за это время научился работать с юникодными именами файлов, а эта утилита - нет... |
Сам удивлен, что на харде нашлись таки исходники (для чего оно писалось, я так и не вспомнил). Понимаю, что это нафик никому не нужно, но чисто из спортивного интереса просто переписал все функи на Unicode http://rghost.ru/40561546. Честно говоря, даже не пытался что-то менять в коде (кроме необходимых изменений под юникодность). Если кто решится проверить, сообщите результат. Thanks in advance! |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Tue Sep 25, 2012 11:08 Post subject: |
|
|
Volniy wrote: | Понимаю, что это нафик никому не нужно, |
Просил бы воздержаться от подобных идейно вредных заявлений! Прога нужна партии и народу!
Вот только у неё почти та же беда, о которой я писал постом выше: перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "Ошибка получения атрибутов искодного файла! Ошибка: 2" и "Ошибка установки атрибутов целевого файла! Ошибка: 2"
Или, может, это у меня в системе что-то криво работает?
P.S.
Мой Symantec Security блокирует запуск и жестоко удаляет файл в карантин. Похоже, там внутри какой-то страшный троян. Зачем использовать некошерные упаковщики? |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Sep 25, 2012 11:28 Post subject: |
|
|
oshizelly wrote: | перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "Ошибка получения атрибутов искодного файла! Ошибка: 2" и "Ошибка установки атрибутов целевого файла! Ошибка: 2"
Или, может, это у меня в системе что-то криво работает? |
Не знаю (Ошибка 2 = Файл не найден). Я ж говорю, что не тестировал. Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так.
PS Файл ничем не упакован. Абсолютно.
PPS Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз. Надо будет посмотреть реализацию разборки параметров командной строки. |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Tue Sep 25, 2012 12:56 Post subject: |
|
|
Volniy wrote: | Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так. |
Это просто. Windows XP, TC 8.01. В региональных настройках OS язык для не-юникодных программ (non-Unicode programs language) - русский? Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты.
Volniy wrote: | Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз. |
Попробовал. Таки да, если имя без пробелов, то юникодные имена обрабатываются без проблем. И если с пробелами, но без юникода, то тоже без проблем. То есть, для получения проблемы нужно совпадение обоих условий. К сожалению, это совпадение, как правило, имеет место.
Volniy wrote: | Файл ничем не упакован. Абсолютно. |
Ну, тогда не знаю, что им всем не нравится: https://www.virustotal.com/file/73b18298eec36f226013235f6e1668a6e8cf3f8d69073d35006abc3a414dd418/analysis/1348561434/ |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Sep 25, 2012 14:41 Post subject: |
|
|
oshizelly wrote: | скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). | Не подтверждаю. У меня всё работает (XP/7 x32). |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Tue Sep 25, 2012 15:12 Post subject: |
|
|
Flasher wrote: | У меня всё работает (XP/7 x32). |
Два уточняющих вопроса:
1. В региональных настройках OS non-Unicode programs language - русский?
2. Какие юникодные символы содержатся в имени тестируемых файлов? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Sep 25, 2012 15:19 Post subject: |
|
|
1. Да.
2. äüö.jpg - файл, с которого берётся дата. |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Tue Sep 25, 2012 15:34 Post subject: |
|
|
Flasher wrote: | 2. äüö.jpg - файл, с которого берётся дата. |
Ну так а я о чём говорю:
Quote: | скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает. |
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Tue Sep 25, 2012 15:43 Post subject: |
|
|
oshizelly
Понял. Проблема исключительно nircmd. Тут уже ничего не поделать, кроме как не потревожить автора. |
|
Back to top |
|
|
Volniy
Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Sep 25, 2012 16:22 Post subject: |
|
|
oshizelly wrote: | Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты. |
Пробовал-перепробовал. Работает. Может я что неправильно делаю?
Не забываем параметры в кавычки помещать, если содержится пробел в пути и/или имени? Как вообще при тестах у тебя исполняется программа? Из командной строки Тотала? |
|
Back to top |
|
|
oshizelly
Joined: 04 Sep 2012 Posts: 52
|
(Separately) Posted: Tue Sep 25, 2012 17:21 Post subject: |
|
|
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 |
|
|
|
|
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
|