Страница 2 из 2

Добавлено: Пн мар 08, 2010 02:03
Batya
Flasher писал(а):Хотя смысл в затирании "Text1 & " выглядит логичным.
Логичным, но неправильным.
Опечатался - надо оставить "Text1". Поправил пост выше.

Добавлено: Пн мар 08, 2010 02:12
Flasher
Batya писал(а):Опечатался - надо оставить "Text1". Поправил пост выше.
Вот другое дело! Но всё-таки, извини, Batya, сейчас наверно совсем буду придирчивым: а можно как-то изменить скрипт, чтобы сортировка в Ирфане сопоставлялась с сортировкой в Тотале, а то если в Ирфане, например, стоит по-умолчанию "сортировать файлы по имени", а в Тотале как-то иначе, то правило добавлять в список только файлы, взятые из ТС от подкурсорного до последнего в панели и в заданной последовательности не соблюдается. Хотя, смею предположить, оно в скрипте и не задано.

Добавлено: Пн мар 08, 2010 13:29
Batya
Flasher писал(а):а можно как-то изменить скрипт, чтобы сортировка в Ирфане сопоставлялась с сортировкой в Тотале
В принципе, конечно, можно. Но нужно поковыряться, используя TCScript.Helper. Попробую в ближайшее время сделать.

Добавлено: Пн мар 08, 2010 23:36
Batya
Flasher писал(а):а можно как-то изменить скрипт, чтобы сортировка в Ирфане сопоставлялась с сортировкой в Тотале
Готово:

Код: Выделить всё

'==========================================================================
' Выполнение команды с указанием файла-списка, содержащего все файлы,
'   заданных расширений, начиная с указанного
'
' Параметры:
' {первый файл файла-списка}
'
' Пример параметров при вызове из TC:
' %P%N
'
' Автор - Batya
'==========================================================================
Option Explicit
'======== Изменяемые параметры ============================================
' Начало команды (до файла-списка)
Const Start   = """%ProgramFiles%\IrfanView\i_view32.exe"" /fs /bf /closeslideshow /slideshow="
' Окончание команды
Const Finish  = ""
' Файл-список
Const List    = "%Temp%\%Random%.txt"
' Удалять ли файл-список после выполнения команды
Const ListDel = True
' Расширения файлов для файла-списка
Dim EXT
Set EXT = CreateObject("Scripting.Dictionary")
EXT.Add "jpg",  ""
EXT.Add "bmp",  ""
EXT.Add "gif",  ""
EXT.Add "jpeg", ""
'==========================================================================
Dim FSO, WSH, TCS, Folder, First, F, Find, L, Command, Text1, Text2
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Set TCS = CreateObject("TCScript.Helper")
Randomize

First   = GetPath(WScript.Arguments(0))
Folder  = FSO.GetParentFolderName(First)
L       = GetPath(Replace(List, "%Random%", CStr(Int(Rnd*10^8)), 1, -1, 1))
Command = GetPath(Start) & """" & L & """" & GetPath(Finish)

TCS.SendCommand "cm_SelectAllFiles"
Find = False
For Each F In TCS.GetSrcSelectedFiles()
  F = Folder & "" & F
  If EXT.Exists(LCase(FSO.GetExtensionName(F))) Then
    If LCase(First) = LCase(F) Then Find = True
    If Find Then
      Text1 = Text1 & F & vbNewLine
    Else
      Text2 = Text2 & F & vbNewLine
    End If
  End If
Next
TCS.SendCommand "cm_ClearAll"

FSO.CreateTextFile(L, True).Write Text1 & Text2
'FSO.CreateTextFile(L, True).Write Text1
WSH.Run Command, 1, ListDel

If ListDel Then FSO.DeleteFile L

Set TCS = Nothing
Set EXT = Nothing
Set WSH = Nothing
Set FSO = Nothing
WScript.Quit 0

Function GetPath(pPath)
  GetPath = WSH.ExpandEnvironmentStrings(pPath)
End Function
Используется "TCScript.Helper", поэтому не изменил пост со скриптом выше, а добавил новый - кому интересно, выбирайте какой вариант больше нравится.

Flasher
Чтобы не учитывать предыдущие файлы, думаю, знаешь, где убрать\поставить комментарий ;)

Добавлено: Вт мар 09, 2010 11:09
Flasher
Batya писал(а):Готово:
Примного благодарен за выполненную работу! :)

Но.. толи у меня руки растут не оттуда, толи у меня с годами мозг атрофировался, толи ещё чего. Объясни, если сможешь. Когда я захожу в папку с путём, где присутствует каталог типа "Мои документы", "Мои рисунки", "My Documents"(остальные с системными названиями не проверял), то по нажатию появляется пустое окно Ирфана, но происходит это только когда я выполняю скрипт из Тотала(пробывал разные), установленном на systemdisk(то бишь С:\), при запуске же из ТС с флешки(у меня F:\) всё работает как часы. Перезапускаю комп, иду в другую винду(аналог, D:\), вызываю ТС с этого харда, вообщем-то по сути тоже systemdisk. И что? Работает отовсюду!! "Интересная" история..
Как говорил один из следователей "Колобков": -"Нитего не понимаю!" :?

Добавлено: Вт мар 09, 2010 11:33
Вахмурка
Возможны две причины:
1. Все перечисленные тобой директории содержат пробел. Поиграйся с "лишними" кавычками вокруг пути и/или имени файла;
2. Все перечисленные тобой директории - "родные" директории винды. Разные программы могут с ними работать некорректно (например, известно, что Тотал "странно" работает с Рабочим столом).

Выяснить просто. Создай директорию "c:\With Spaces\" и попробуй там. Если все пучком, значит, вторая причина. Если нет, значит первая.

Добавлено: Вт мар 09, 2010 13:08
Flasher
Вахмурка
Спасибо за подключение. Я обнаружил проблему. Как и предполагалось, состоящую в моей криворукости. Сначала казалось проблема была с %P%N в Тоталах с C:\, добавил кавычки к параметрам в кнопках, потом вспомнил, что недавно менял кодировку файлов русских файлов ТС на UTF8, поменял обратно на ANSI, но кавычки в параметрах убрать забыл. А на той винде кнопку скопировал с флешечного Тотала, где кавычек не было, вот там всё и работало.
Ещё поковыряюсь с юникодностью, если сам не найду решение, доложу.

По поводу:
Вахмурка писал(а):2. Все перечисленные тобой директории - "родные" директории винды.
Они не родные, просто названия аналогичные.

Да, вопросик. В справке пишут, что %P%S при пробелах сам добавляет кавычки. Правильно ли думать, что в случае с %P%N происходит тоже самое? Где-то в "Кнопках" Captain Flint писал как можно это проверить с команды.

Добавлено: Вт мар 09, 2010 13:56
Tol!k
Flasher писал(а):В справке пишут, что %P%S при пробелах сам добавляет кавычки. Правильно ли думать, что в случае с %P%N происходит тоже самое?
Да.
Кнопка-шпаргалка:

Код: Выделить всё

TOTALCMD#BAR#DATA
%comspec% /k echo Wrong: &
echo "%%N"	= "%N" &echo "%%P%%N"	= "%P%N" &echo "%%M"	= "%M" &echo "%%T%%M"	= "%T%M" &echo "%%S"	= "%S" &echo "%%P%%S"	= "%P%S" &echo. &echo Right: &echo %%N	= %N &echo %%P%%N	= %P%N &echo %%M	= %M &echo %%T%%M	= %T%M &echo %%S	= %S &echo %%P%%S	= %P%S
WCMICONS.DLL,55
Кавычки у имён с пробелами


-1
Три пробела перед = — это символ табуляции

Добавлено: Вт мар 09, 2010 14:06
Rodny
Где-то в "Кнопках" Captain Flint писал как можно это проверить с команды
Программулька ShowCmdLine покажет переданные параметры.

Добавлено: Вт мар 09, 2010 14:10
Вахмурка
Правильно ли думать, что в случае с %P%N происходит тоже самое?
"Возвращаясь к напечатанному..."

Добавлено: Вт мар 09, 2010 14:15
Flasher
Tol!k писал(а):Кнопка-шпаргалка:
Оперативненько). Благодарю! Удобная штука. Хотя я теперь уже навсегда запомнил.)
Вахмурка писал(а):"Возвращаясь к напечатанному..."
Да, то, что в статье подчёркнуто об этом. Спасибо за напоминание.

З.Ы.: .. Вот какие мы бестолковые - нарушили требование автора программы и еще удивляемся! :lol:
                    • [list][list][list]Вахмурка (с)
[/list][/list][/list]