Script Request

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Batya писал(а):Сделал, только пока не выкладывал:
CC[n] - счётчик, где n - минимальное кол-во цифр счётчика
Наверное, мы о разном. Я имел ввиду не счётчик в маске, а ситуацию, когда при переименовании получается уже существующее имя файла и скрипт "вылетает". В этом случае я предлагал дописывать к имени _2, или _3 и т.д., пока переименование не станет возможным.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

sa писал(а):В этом случае я предлагал дописывать к имени _2, или _3 и т.д., пока переименование не станет возможным.
А почему бы не дописывать "_02" или "[003]"?
Я предлагаю дописывать в соответствии с заданной маской.
Нет, я не сплю. Я просто медленно моргаю.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Batya писал(а):А почему бы не дописывать "_02" или "[003]"?
Я предлагаю дописывать в соответствии с заданной маской.
Большую функциональность только приветствую. Но лучше попробовать...
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Batya, не сложно ли будет тебе написать скрипт, открывающий в соседней вкладке текущей панели тот же путь, только в начале пути будет вставлен "\\\Back2life\".

пример: активная вкладка - C:\Documents and Settings\
новая вкладка - \\\Back2life\C:\Documents and Settings\
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj

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

'Открыть активную папку в новой вкладке в Back2Life
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.LockTC True
TCS.SendCommand "cm_CopySrcPathToClip"
TCS.SendCommand "cm_OpenNewTab"
TCS.SendCommand "cm_FocusCmdLine"
TCS.SendKeystroke "cd \\\Back2life\" & TCS.GetTextFromClip
TCS.SendKeystroke "{ENTER}"
TCS.ClearClip
Set TCS = Nothing
Wscript.Quit
Последний раз редактировалось Flasher Вс июн 06, 2010 02:44, всего редактировалось 1 раз.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Flasher, спасибо
НО
скрипт плохо работает с путями, содержащими кириллицу, а также забивается буфер обмена
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Для опустошения буфера добавил строку. A по поводу кириллицы могу только предложить отредактировать реестр. У меня в разных папках с кириллицей и пробелами запуск производится без проблем.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Batya, а нет ли у тебя идей как лучше реализовать эту задачу?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

laburj
Задача довольно простая, и без участия Хелпера с ТС-шными командами лучше вряд ли что-либо можно придумать, поэтому максимум, что стоило бы добавить в скрипте - это переключение на англ. раскладку перед прописью в комстроке cd..: после TCS.SendCommand "cm_FocusCmdLine" добавь следующей строкой

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

TCS.SendKeystroke "^+1" 'В доп. параметрах клав-ы переключатель на англ. раскладку назначить на Ctrl+Shift+1
А почему Хелпер у тебя не так работает с буфером при использовании GetTextFromClip, я понятия не имею, с этим лучше обратиться к автору (Volniy).
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

laburj писал(а):Batya, а нет ли у тебя идей как лучше реализовать эту задачу?
Достаточно простой кнопки:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TOTALCMD.EXE /S /O /T
/L="\\\Back2life\%P"
%COMMANDER_PATH%\TOTALCMD.EXE
Перейти в Back2Life


-1
Последний раз редактировалось Batya Пн июл 12, 2010 14:22, всего редактировалось 1 раз.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Flasher писал(а):без участия Хелпера с ТС-шными командами лучше вряд ли что-либо можно придумать
Беру свои слова назад.)
В кнопке после /O нужно добавить /T.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher писал(а):В кнопке после /O нужно добавить /T.
Точно. Поправил.
Нет, я не сплю. Я просто медленно моргаю.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Batya писал(а):Достаточно простой кнопки:
и правда, всё так просто)
спасибо ещё раз!
taravasya
Сообщения: 38
Зарегистрирован: Сб мар 27, 2010 18:50

Сообщение taravasya »

Подскажите пожалуйста...
По форуму много вариаций автоматического копирования(только файлов, только папок, только выделенных файлов и т.д.), а мне нужен скрипт, копирующий ВСЁ что выделено в тотале(и папки и файлы) с сохранением структуры подпапок и файлов в этих подпапках, в заданный каталог(нужно последний сделать аргументом - что бы при необходимости я бы мог изменить его). При этом копирование желательно средством TC, и жедательно что-бы копирование само ставилось в очередь(что-бы не дожидаясь окончания копирования я бы мог использовать скрипт ещё раз). И ещё, что бы в случае совпадения имён папок и файлов, происходило бы автоматическое переименование(например с добавлением какого нибудь - "запараметренного" символа) Большое спасибо.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

taravasya писал(а):нужен скрипт, копирующий ВСЁ что выделено в тотале(и папки и файлы) с сохранением структуры подпапок и файлов в этих подпапках, в заданный каталог. .. При этом копирование желательно средством TC .. И ещё, что бы в случае совпадения имён папок и файлов, происходило бы автоматическое переименование

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

'Копировать выделенное с переименованием одинаковых имён по счётчику
'=====================================================
'Условия:
'1. Ключ в файле конфигурации AlwaysCopyInBackground=1
'2. Параметры: "<Путь назначения>"
'=====================================================
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
If WScript.Arguments.Count = 0 Then
  MsgBox "Не заданы параметры!", vbOKOnly + vbCritical, "Копирование"
  WScript.Quit
End If
TCS.LockTC True
With CreateObject("WScript.Shell") .Run """" & TCS.TCPath & "\totalcmd.exe"" /S /O /R=""" & WScript.Arguments(0) & """" End With
TCS.Sleep 400
TCS.SendCommand "cm_CopyOtherpanel"
TCS.SendKeystroke "+{TAB}{SPACE}{DOWN 4}{ENTER}"
TCS.Sleep 200
TCS.SendKeystroke "{TAB}
TCS.SendCommand "cm_GotoPreviousDir"
TCS.SendKeystroke "{TAB}"
TCS.LockTC False
Set TCS = Nothing
WScript.Quit
taravasya писал(а):жедательно что-бы копирование само ставилось в очередь
Для этого всё-таки лучше диспетчер фоновой пересылки использовать.
taravasya писал(а):что-бы не дожидаясь окончания копирования я бы мог использовать скрипт ещё раз
Если копирование задать по умолчанию в фоне, то с этим по идее проблем не должно возникнуть.
Ответить