Автоматическое создание папок

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

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

Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

Flasher писал(а):Папка открывается в любом случае в текущей панели, а именно в той панели, куда распаковывается. Исключение, когда с двух сторон был открыт один и тот же каталог. Исправить можно с пом. TCFS2.
Странно, у меня папка открывается в соседней панели (даже если с двух сторон открыты разные каталоги). Т.е. после операции имею в активной панели исходную папку, в соседней - папку назначения (автоматически созданную).
Flasher писал(а):Нет. Потому что Тоталу нужно находиться в той панели из которой берутся элементы.
Печально. Ну тогда на практике станет ясно что удобнее, автоматически создавать папку, но потом клацать по каждому совпадающему файлу, или как раньше, самому создавать папку, потом самому же её искать и перемещать внутренней командой Тотала, используя все её преимущества.

Спасибо!

Posted after 4 minutes:
Flasher писал(а):P.S. Я сегодня отлучаюсь до вечера, можно попросить MVV, sa - они при желании сделают кнопку.
Скрипт же есть! Если под "сделать кнопку" понимается перетащить его на панель и прописать параметы, так это я уже сделал (как-то ведь я протестировал все это дело). Если появилась какая-то идея, как изменить функционал скрипта или еще что-то - то я не тороплюсь, до вечера мне это не горит :)
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

p.s.

Опытным путем обнаружил, что чтобы папка открывалась в текущей панели, не трогая при этом вкладки соседней, строку кода:
Flasher писал(а):

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

If Path = .CurrentDirectory & "" Then P = "L" Else P = "R"
нужно изменить таким образом:

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

If Path = .CurrentDirectory & "" Then P = "R" Else P = "L"
[/quote]

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

Сообщение Flasher »

Cobblestone-TLT
Как же? R - это получатель, L - это источник. При совпадении активного каталога и каталога получателя открываем нужное, оставаясь на месте, в ином случае открываем нужно в другой панели и переходим в неё. У меня всё верно.
Cobblestone-TLT писал(а):Если под "сделать кнопку" понимается перетащить его на панель и прописать параметы
Нет, кнопка - это кнопка с функционалом cmd/nircmd + TCFS2 без прибегания к сценариям.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

Flasher писал(а):Как же? R - это получатель, L - это источник.
Прямо мистика какая-то, но у меня необходима такая вот "инверсия" этих значений, чтобы все происходило в рамках только активной панели.. :?
Flasher писал(а):Нет, кнопка - это кнопка с функционалом cmd/nircmd + TCFS2 без прибегания к сценариям.
Интересно было бы попробовать такой вариант :)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Cobblestone-TLT писал(а):Интересно было бы попробовать такой вариант
Не такой, но с TCFS2:

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

'===============================================
' Описание: Переместить в папку с текущей датой
' Параметры: %L
' Требования: Необходима утилита TCFS2
'===============================================
Dim TCFS2, S
'===============================================
TCFS2 = "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"
'=============================================== 
If WScript.Arguments.Count > 0 Then
  S = "tcm(1005,1) delay(200) send(`~(" & Right(Year(Date),4) & "." & Right("0" & Month(date), 2)_
  & "." & Right("0" & Day(date), 2) & "\{TAB}{Enter})`, findwnd(`TInpComboDlg`))"
  S = " /ef """ & S & """"
  CreateObject("WScript.Shell").Exec TCFS2 & S
End If
Wscript.Quit
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

sa писал(а):Не такой, но с TCFS2:
Отлично, теперь перемещение идет внутренними средствами Тотала! А с авто-входом в папку вопрос решаем? :)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Cobblestone-TLT писал(а):А с авто-входом в папку вопрос решаем?
Наверное - да, попробуй! Пугают проблемы с возможностью открытия кучи дополнительных окон в диалоге перезаписи и необходимостью ожидания их закрытия до входа в папку.
А можешь просто сделать отдельную кнопку для входа в папку с текущей датой. Строка для скрипта наподобие такой:

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

S = "tcm(4003,1) send( `~(cd " & Right(Year(Date),4) & "." & Right("0" & Month(date), 2) & "." & Right("0" & Day(date), 2) & "\{Enter})`, findwnd(`TTOTAL_CMD`))"
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

Сообщение Cobblestone-TLT »

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

Сообщение Flasher »

Cobblestone-TLT
А разве перемещать и переходить надо не в целевой, а в активной панели? Почему об этом нельзя было сразу написать?
Cobblestone-TLT писал(а):Интересно было бы попробовать такой вариант
Ну, допустим (со всякими возникающими окнами не гарантирую безошибочного перехода):

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

TOTALCMD#BAR#DATA
%ComSpec% /c ""%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ef "tcm(1005,1) eval(send_wait(`%date:~6%~.%date:~3,2%~.%date:~0,2%\ {ENTER}`, findwnd(`TInpComboDlg`))" && "%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe" /ef
"tcd(`%P%%date:~6%%.%%date:~3,2%%.%%date:~0,2%%\`,,S,1)""
ieframe.dll,62
Переместить выбранное в папку с именем текущей даты и перейти в неё

1
У команды send_wait в TCFS2.ini стоит поменять 1000 на 50 или 100.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):У команды send_wait в TCFS2.ini стоит поменять 1000 на 50 или 100.
1000 в макросе нет. А зачем менять в нём что-то?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ага, с wait_for спутал. Менять для того, чтобы уменьшить задержку между опросами.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):чтобы уменьшить задержку между опросами.
Сейчас она уже 0,1 сек. Если всё-таки надо меньше, то надо менять два числа.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):надо менять два числа.
Второе - какое?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher
*10
Vasyugan
Сообщения: 1
Зарегистрирован: Чт фев 27, 2014 17:44

Сообщение Vasyugan »

Здравствуйте. Скопировал этот скрипт в файл autodir.vbs, добавил кнопку на панель инструментов. При попытке использования пишет "Файл не найден".

Кнопка
TOTALCMD#BAR#DATA
Autodirectory
%L
C:\totalcmd\TOTALCMD64.EXE,5
Создает папку с именем файла и копирует туда файл
с:\autodir.vbs
0
-1
Что я сделал не так?

[mod="Avada"] Читаем правила текущего подфорума! Текст скрипта заменён ссылкой. Код кнопки нормально оформлен.[/mod]
Ответить