| 
 
	
		| 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: 1172
 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: |   |  
				| 
 |  
				| Ладно, тогда ждать остальных не будем, добавил рекурсию. Теперь тебе придётся опять параметры править.
   
 
 WSO/HTA. 	  | LonerD wrote: |  	  | Каким образом "рисовать окно с кнопками Пассивная/Активная" и присваивать переменной определённое значение при нажатии на одну или вторую кнопку - пока не знаю. | 
 
 
 Вас-вас? Ихь ферштэе нихьт, ворюбэр гейт ди Рэдэ! Майн Копф эксплодирт! 	  | 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
 | 
 
 
 Не понял, как относится эмуляция Tab (которую легко можно сделать штатными средствами) к возможности брать список пассивной панели. Параметры кнопки TC преобразуются ещё до запуска приложения. Так что бесполезно (уже много раз обсуждалось). 	  | LonerD wrote: |  	  | Кстати, а если без Хэлпера, то можно ведь обойтись и nircmd. Прописать выполнение команды Nircmd sendkeypress tab перед и после присвоения параметров.
 | 
 |  |  
		| 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: |   |  
				| 
 |  
				| Не подтверждаю. У меня всё работает (XP/7 x32). 	  | oshizelly wrote: |  	  | скрипт (обе версии) не срабатывает, если имя целевого файла содержит символы юникода (проверялось под Windows XP). | 
 |  |  
		| 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
 
 |