Страница 5 из 11
Добавлено: Вс сен 16, 2012 15:42
Flasher
LonerD писал(а):тут запрос простейший, сам справлюсь
Справился?
LonerD писал(а):иначе получается две команды - одна для активной, вторая для пассивной панели.
Считаю, что именно так и должно быть. Зачем кликать что-то в окне, если то же самое можно кликнуть на тулбаре, причём в более информативном представлении (иконка/подсказка)?
Подумал насчёт случая с выделенными файлами в пассивной панели. Не сказать, что это юзабильней. Я, например, выделение делаю в последнюю очередь, т.е. в любом случае у меня выбранное будет в активной панели. Если хотите, цепану Хелпер, не проблема (будет параметрический выбор инверсии). Если не надо, то выкладываю сейчас с рекурсией и закончим на этом.

Добавлено: Вс сен 16, 2012 17:27
LonerD
Справился?
В какой-то мере. InputBox с диалогом: "Введите файл-источник: 1 - в активной панели, 2 - в пассивной".
Каким образом "рисовать окно с кнопками Пассивная/Активная" и присваивать переменной определённое значение при нажатии на одну или вторую кнопку - пока не знаю.
В общем, может кому пригодится.
Строку:
Код: Выделить всё
File = .Item(0) : List = .Item(1) : Count = .Item(2)
заменить на
Код: Выделить всё
FileA = .Item(0) : File = .Item(1) : List = .Item(2) : Count = .Item(3) : Source = .Item(4)
Перед Set FSO добавить:
Код: Выделить всё
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
Параметры запуска:
Код: Выделить всё
' Параметры: %V %T%M %WL <индекс замены> <индекс файла-источника>
' Индекс файла-источника принимает следующие значения:
' 1 - файл-источник - это выбранный файл пассивной панели
' 2 - файл-источник - это выбранный файл активной панели
' 0 - выдаётся запрос на указание файла-источника
случая с выделенными файлами в пассивной панели
Мне не надо.
Кстати, а если без Хэлпера, то можно ведь обойтись и nircmd.
Прописать выполнение команды Nircmd sendkeypress tab
перед и после присвоения параметров.
Добавлено: Вс сен 16, 2012 17:38
Flasher
Ладно, тогда ждать остальных не будем, добавил рекурсию.
Теперь тебе придётся опять параметры править.
LonerD писал(а):Каким образом "рисовать окно с кнопками Пассивная/Активная" и присваивать переменной определённое значение при нажатии на одну или вторую кнопку - пока не знаю.
WSO/HTA.
LonerD писал(а):"Enter Source File or Dir:" & vbNewLine &_
"1 - Source file in Target panel"
Вас-вас? Ихь ферштэе нихьт, ворюбэр гейт ди Рэдэ! Майн Копф эксплодирт!
vbNewLine меняй на L.
Да, и опциональный выбор сам по себе бестолковый. Просто сделай себе вывод в окне, да и всё, а последний параметр убери. Тебе-то зачем плодить то, чем ты не будешь пользоваться?
On Error Resume Next лишнее, и, коли используешь, обнулять нужно обязательно, иначе все ошибки в скрипте будут игнорироваться. И, конечно, лучше не выходить при ошибке ввода, а снова показывать то же окно:
Код: Выделить всё
Do Until Source = 1 Or Source = 2
Source = InputBox("Допустимые значения ввода:" &L&L& "1 (если источник в активной панели)" &L&L&_
"2 (если источник в пассивной панели)", " Присвоение даты и времени выбранным элементам")
If Trim(Source) = "" Then WScript.Quit
Loop
LonerD писал(а):Кстати, а если без Хэлпера, то можно ведь обойтись и nircmd. Прописать выполнение команды Nircmd sendkeypress tab
перед и после присвоения параметров.
Не понял, как относится эмуляция Tab (которую легко можно сделать штатными средствами) к возможности брать список пассивной панели. Параметры кнопки TC преобразуются ещё до запуска приложения. Так что бесполезно (уже много раз обсуждалось).
Добавлено: Вт сен 25, 2012 01:32
oshizelly
Выяснилась такая неприятная вещь: скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает.
Это никак не лечится?
Re: Автоматизация переноса атрибутов и времени...
Добавлено: Вт сен 25, 2012 09:51
Volniy
oshizelly писал(а):...Volniy написал замечательную утилитку CopyAttr.exe.... Однако TC за это время научился работать с юникодными именами файлов, а эта утилита - нет...
Сам удивлен, что на харде нашлись таки исходники (для чего оно писалось, я так и не вспомнил). Понимаю, что это нафик никому не нужно, но чисто из спортивного интереса просто переписал все функи на Unicode
http://rghost.ru/40561546. Честно говоря, даже не пытался что-то менять в коде (кроме необходимых изменений под юникодность). Если кто решится проверить, сообщите результат. Thanks in advance!
Добавлено: Вт сен 25, 2012 11:08
oshizelly
Volniy писал(а):Понимаю, что это нафик никому не нужно,
Просил бы воздержаться от подобных идейно вредных заявлений! Прога нужна партии и народу!
Вот только у неё почти та же беда, о которой я писал постом выше: перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "
Ошибка получения атрибутов искодного файла! Ошибка: 2" и "
Ошибка установки атрибутов целевого файла! Ошибка: 2"
Или, может, это у меня в системе что-то криво работает?
P.S.
Мой Symantec Security блокирует запуск и жестоко удаляет файл в карантин. Похоже, там внутри какой-то страшный троян.

Зачем использовать некошерные упаковщики?
Добавлено: Вт сен 25, 2012 11:28
Volniy
oshizelly писал(а): перенос атрибутов не срабатывает, если любой из пары файлов содержит символы юникода (проверялось под Windows XP). Пишет, соответственно, "Ошибка получения атрибутов искодного файла! Ошибка: 2" и "Ошибка установки атрибутов целевого файла! Ошибка: 2"
Или, может, это у меня в системе что-то криво работает?
Не знаю (Ошибка 2 = Файл не найден). Я ж говорю, что не тестировал. Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так.
PS Файл
ничем не упакован. Абсолютно.
PPS Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз. Надо будет посмотреть реализацию разборки параметров командной строки.
Добавлено: Вт сен 25, 2012 12:56
oshizelly
Volniy писал(а):Как воссоздать мне у себя подобную ситуацию? Я бы сам посмотрел, что там не так.
Это просто. Windows XP, TC 8.01. В региональных настройках OS язык для не-юникодных программ (non-Unicode programs language) - русский? Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты.
Volniy писал(а):Попробуй файлы с именами без пробелов. Может неправильно обрабатывались, хз.
Попробовал. Таки да, если имя без пробелов, то юникодные имена обрабатываются без проблем. И если с пробелами, но без юникода, то тоже без проблем. То есть, для получения проблемы нужно совпадение обоих условий. К сожалению, это совпадение, как правило, имеет место.
Volniy писал(а): Файл ничем не упакован. Абсолютно.
Ну, тогда не знаю, что им всем не нравится:
https://www.virustotal.com/file/73b1829 ... 348561434/
Добавлено: Вт сен 25, 2012 14:41
Flasher
oshizelly писал(а):скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP).
Не подтверждаю. У меня всё работает (XP/7 x32).
Добавлено: Вт сен 25, 2012 15:12
oshizelly
Flasher писал(а): У меня всё работает (XP/7 x32).
Два уточняющих вопроса:
1. В региональных настройках OS non-Unicode programs language - русский?
2. Какие юникодные символы содержатся в имени тестируемых файлов?
Добавлено: Вт сен 25, 2012 15:19
Flasher
1. Да.
2. äüö.jpg - файл, с которого берётся дата.
Добавлено: Вт сен 25, 2012 15:34
oshizelly
Flasher писал(а):2. äüö.jpg - файл, с которого берётся дата.
Ну так а я о чём говорю:
скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). Если юникодные символы содержатся только в исходном файле, то скрипт работает.
Добавлено: Вт сен 25, 2012 15:43
Flasher
oshizelly
Понял. Проблема исключительно nircmd. Тут уже ничего не поделать, кроме как не потревожить автора.
Добавлено: Вт сен 25, 2012 16:22
Volniy
oshizelly писал(а):Тогда добавляем в имя файла пробел и любой символ из любой другой кодовой таблицы, например, немецкие диакритики ä, ü, ö. И пытаемся перенести атрибуты.
Пробовал-перепробовал. Работает. Может я что неправильно делаю?
Не забываем параметры в кавычки помещать, если содержится пробел в пути и/или имени? Как вообще при тестах у тебя исполняется программа? Из командной строки Тотала?
Добавлено: Вт сен 25, 2012 17:21
oshizelly
Volniy писал(а):Как вообще при тестах у тебя исполняется программа? Из командной строки Тотала?
Из кнопки. Вот код:
И потом, почему проблемы вызывает именно сочетание в имени юникод + пробел? А любое из двух условий по отдельности - нет.