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

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

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

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

Сообщение Flasher »

sa писал(а):Может <F6><F6>, чтобы не добавлять новую клавишу?
А, без разницы, можно как на пианино. :D
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher
Не все ж пианисты! Да и F5 пригодится для аналогичной задачи с копированием, а не перемещением файлов во вновь создаваемую папку.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Это я образно выразился (любые клавишные подойдут). Можно хоть перебором близлежащих клавиш, хоть кликанием одной и той же. Перебором даже побыстрей получается. :)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

Сообщение Flasher »

F5 и F6 - не близлежащие? Один палец на одной, другой на другой, перебираешь туда-сюда: F5>F6>F5 либо F6>F5>F6.
В скобках речь о муз. инстументах.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Один палец на одной, другой на другой, перебираешь туда-сюда: F5>F6>F5 либо F6>F5>F6.
Ну, как знаешь. Мне удобнее перед вводом имени папки нажать F6, либо трижды F6 при перемещении в пассивную панель и соответственно F5, либо трижды F5 при копировании.
Flasher писал(а):В скобках речь о муз. инстументах.
Теперь понял.
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

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

Добрый день!
Ищу кнопку (возможно связку скрипт + кнопка) которая перемещала бы выделенные объекты (папки/файлы) в папку в текущей панели с текущей датой в имени.
С созданием такой папки, при её отсутствии.
С запросом на перезапись при совпадении имен перемещаемых объектов с уже имеющимися в папке-назначении.
С последующим входом в эту папку.

Формат даты создаваемой (искомой) папки - "YYYY.MM.DD".
Желательно, чтобы условие по автоматическому входу в папку после перемещения было опциональным, указывалось через параметр в кнопке (например при 1 - перемещать и автоматически заходить, при 0 - только перемещать).

Если кто уже такой владеет, просьба поделиться, или прошу знатоков набросать кнопку(скрипт) с таким функционалом :)

Posted after 2 minutes:

p.s. Поиском разумеется искал, не нашел. Если такое решение уже кем-то предложено, извиняюсь за повтор и прошу направить по пути истинному :)
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

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

Сообщение Flasher »

Cobblestone-TLT
Тип даты выбранных элементов не указан.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

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

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

p.s. Сортировка выделенных объектов по папкам с датами в именах, соответствующими датам создания(изменения/последнего доступа) - идея конечно тоже очень интересная, но спрашивал пока не про это :)

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

Сообщение Flasher »

Проблемы с кабелем были..

Хотел было спросить, зачем было повторять одно и то же, коли я один конкретный вопрос задал, пока не наткнулся на это:
Cobblestone-TLT писал(а):чтобы выдавался стандартный запрос на перезапись (в котором уже можно выбрать: пропустить всё, перезаписать всё, перезаписать более новыми, переименовать оригинал и т.п.)!
Это никакой не стандартный запрос. Сперва написано было только про перезапись. Если не брать рисование окон на HTA/WSO, то стандартно можно выдать максимум 3 кнопки (Стоп/Повтор/Пропустить или Да/Нет/Отмена). Раз речь идёт обо всех элементах, то зачем вообще нужен запрос? Можно же взять параметры и кнопочную панель в виде меню со всеми вариантами и выбором нужного.

Пока на пробу такой вариант с системным диалогом:

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

'==============================================================
' Перемещать выбранные элементы в каталог с именем текущей даты
' Условие: путь запуска - пустой
' Параметры: %WL "<путь_получателя\>" <переход в папку: 1>
' Пример:    %WL "%T" 1
'==============================================================
With WScript.Arguments
  C = .Count : If C = 0 Then WScript.Quit
  List = .Item(0) : Path = .Item(1) : If C = 3 Then Jump = .Item(2)
End With : If Right(Path, 1) <> "" Then Path = Path & ""

M = Month(Date) : If Len(M) = 1 Then M = "0" & M
D = Day(Date)   : If Len(D) = 1 Then D = "0" & D
Targ = Path & Year(Date) & "." & M & "." & D & ""

With CreateObject("Scripting.FileSystemObject")
  If Not .FolderExists(Targ) Then .CreateFolder(Targ)
  Set FD = CreateObject("Shell.Application").NameSpace(Targ)
  Set TF = .GetFile(List).OpenAsTextStream(1, -1)
  Do While Not TF.AtEndOfStream
    FD.MoveHere TF.ReadLine
  Loop : TF.Close
End With

If Jump = 1 Then
  With CreateObject("WScript.Shell")
    If Path = .CurrentDirectory & "" Then P = "L" Else P = "R"
    .Run """%COMMANDER_EXE%"" /O /S /" & P & "=""" & Targ & """", 0, True
    If P = "R" Then .SendKeys "{TAB}"
  End With
End If
Последний раз редактировалось Flasher Вс фев 09, 2014 13:01, всего редактировалось 4 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

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

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

Сообщение Flasher »

Cobblestone-TLT
Изначально нигде про диалог Тотала речь не шла. Всё же советую сперва попробовать предложенное. Если не устроит, будем решать с окнепрыгами в TC, что ещё проще, но никак не краше (и, естественно, после первого взаимодействия с диалогом все дальнейшие движения будут полностью отданы на суд Тотала)...
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Cobblestone-TLT
Сообщения: 34
Зарегистрирован: Сб фев 01, 2014 14:26

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

Flasher
Спасибо за предложенный вариант. Основную функцию выполняет, но опишу моменты, не соответствующие тому, что изначально хотелось бы видеть.
Папка открывается не в текущей панели, а в соседней (неудобно, т.к. работаю с двумя панелями сразу и хочу, чтобы открытые папки (вкладки) на неактивной панели оставались без изменений). Формат даты создаваемой папки DD.MM.YYYY, а хочется видеть YYYY.MM.DD, для удобного дальнейшего упорядочивания по имени уже этих папок, чтобы шло подряд так:
2013.12.22
2014.01.23
2014.02.21
а не так:
21.02.2014
22.12.2013
23.01.2014
Ну и возможности у окна с запросом на перезапись у Тотала много шире, чем стандартный Windows (или всяких TeraCopy, которые успешно перехватывают вставку по CTRL+V), возможно будет нехватать возможности быстрого просмотра по F3 прямо из этого диалога, возможности дописать имеющийся файл и некоторых "фишек" из раздела "дополнительно" того диалога). В случае когда диалог замены/пропуска Windows, то вобще нет возможности выбрать одно действие для всех файлов, приходится делать выбор для каждого отдельно, даже если действие одно и то же.
Вот пожалуй и все, что "не нравится" :)
после первого взаимодействия с диалогом все дальнейшие движения будут полностью отданы на суд Тотала
Вот этого слегка не понял. Например если отдать диалог замены файлов при совпадении Тоталу, нельзя будет вернуться к скрипту для открытия папки? А если само перемещение будет последним действием и будет отдано на суд Тотала (со всеми его диалогами и возможностями в нем)? Т.е. скрипт создает список объектов для перемещения, проверяет наличие папки YYYY.MM.DD, создает её, если не нашел, заходит в неё, если нужный параметр = 1, и в последнюю очередь передает Тоталу управление для выполнения перемещения по этому списку в эту папку его внутренними средствами. Такой вариант возможен?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Cobblestone-TLT писал(а):Папка открывается не в текущей панели
Папка открывается в любом случае в текущей панели, а именно в той панели, куда распаковывается. Исключение, когда с двух сторон был открыт один и тот же каталог. Исправить можно с пом. TCFS2.
Cobblestone-TLT писал(а):Формат даты создаваемой папки DD.MM.YYYY, а хочется видеть YYYY.MM.DD
Исправил.
Cobblestone-TLT писал(а):нельзя будет вернуться к скрипту для открытия папки?
Логично. Но попробовать можно, если прогресс-бар будет активирован.
Cobblestone-TLT писал(а):Такой вариант возможен?
Нет. Потому что Тоталу нужно находиться в той панели, из которой берутся элементы. Всё, что будет делать утилита, - это щёлкать кнопки в диалоге и прописывать название папки, которую TC создаёт автоматически.

P.S. Я сегодня отлучаюсь до вечера, можно попросить MVV, sa - они при желании сделают кнопку.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить