Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Создание папки с выделенными файлами
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Student22



Joined: 03 Oct 2014
Posts: 1

Post (Separately) Posted: Fri Oct 03, 2014 23:36    Post subject: Создание папки с выделенными файлами Reply with quote

Подскажите, как автоматически создать папку с уже выделенными файлами. Чтобы выделил файлы и создалась папка с ними в этой же вкладке. Такое вобще можно реализовать?
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 9033
Location: Россия, Саратов

Post (Separately) Posted: Sat Oct 04, 2014 00:48    Post subject: Reply with quote

Student22
Во-первых, обычно такие вопросы задаются в подфоруме по автоматизации (куда эта тема и переносится). Во-вторых, сама задача поставлена не вполне вразумительно. "Создалась папка с ними в этой же вкладке" — это что, копирование? перемещение? И речь, разумеется, должна идти не о той же вкладке, а о том же каталоге.
В случае перемещения это вообще стандартный функционал TC, реализованный через инструмент группового переименования (имя_ каталога\[N], есть в справке, обcуждалось на форуме).
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.


Last edited by Avada on Sat Oct 04, 2014 11:50; edited 1 time in total
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2223

Post (Separately) Posted: Sat Oct 04, 2014 10:40    Post subject: Reply with quote

Кнопка с использованием утилиты TCFS2:
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "tcm(906,1) delay(200)
send(@`ИМЯ`, findwnd(`TInpComboDlg`)) send(`\ {ENTER}`, findwnd(`TInpComboDlg`))"
%COMMANDER_PATH%\Totalcmd.exe,17
Переместить в папку ИМЯ


-1
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12977
Location: Москва

Post (Separately) Posted: Sat Oct 04, 2014 13:01    Post subject: Reply with quote

sa
Телепатишь? Или в личке узнал, что это перемещение, а не копирование Question
P.S.: И спрошено неспроста. Теме светит мод, ибо ответы уже давались.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2223

Post (Separately) Posted: Sat Oct 04, 2014 15:25    Post subject: Reply with quote

Flasher wrote:
Или в личке узнал, что это перемещение, а не копирование

Нет, не узнал. Разница не велика: для копирования достаточно заменить 906 на 905.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2223

Post (Separately) Posted: Wed Oct 08, 2014 10:11    Post subject: Reply with quote

Для независимости работы вышеприведённой кнопки от состояния пассивной панели (например, когда в ней открыт архив) модифицировал её, применив вместо команды "Переименовать/переместить файлы" команду "Упаковать файлы в текущий каталог (удалив исходные)". Чтобы включить эту команду, не забудьте ввести в wincmd.ini в секции [Shortcuts] строку CAS+F5=cm_PackFiles
Code:
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "send(`^%+{F5}`)
eval(send_wait(@`ИМЯ`, findwnd(`TDLGZIP`))) send(`\{ENTER}`, findwnd(`TDLGZIP`))"
%COMMANDER_PATH%\Totalcmd.exe,17
Переместить в папку ИМЯ


-1
Back to top
View user's profile Send private message
helb



Joined: 08 Oct 2014
Posts: 52

Post (Separately) Posted: Thu Oct 09, 2014 18:20    Post subject: Reply with quote

Avada wrote:
В случае перемещения это вообще стандартный функционал TC, реализованный через инструмент группового переименования
Обычное копирование/перемещение тоже работает: F5/F6 → <имя каталога>\ → Enter.

Вообще как раз недавно слепил скрипт и повесил на Shift+F7. Создает каталог и перемещает выделенное в него. Если начать с “/” — создает в противоположной панели, если закончить на “\” — переходит в каталог, если использовать “.” вместо имени создает по текущей дате-времени. Все три опции можно сочетать. В качестве имени по умолчанию подставляется то, что под курсором.
Code:
'=====================================================================================
' TC Move to new dir (by helb)
' Creates new dir and moves selected files to it
' Usage: start new dir name with ‘/’ to create+move in opposite panel
' end dir name with ‘\’ to navigate inside after operation
' enter "." instead of name to create dir named with current date+time
' Parameters: %WL "%T" %P%N (list, target panel, suggested name+default parent dir (in case of mixed location mode))
'=====================================================================================
if WScript.Arguments.Count < 3 then
  MsgBox "Not enough parameters", vbOKOnly + vbError, "Warning!"
  Wscript.Quit
end if

dim list, FSO, fObj, fName, fPath, newDir, nav, opp, confirmed
set FSO = CreateObject("Scripting.FileSystemObject")

set fObj = getObj(WScript.Arguments(2))
newDir = InputBox("Enter name. ‘/’ as first character = opposite panel, ‘\’ as last = navigate to dir, ‘.’ = current date-time", "Move to dir", FSO.GetBaseName(fObj))
if NewDir = "" then WScript.Quit

if Right(newDir, 1) = "\" then
   nav = "L"
   newDir = Left(newDir, Len(newDir)-1)
else
   nav = ""
end if
if Left(newDir, 1) = "/" then
   opp = true
   newDir = Replace(newDir, "/", "", 1, 1)
end if
if newDir = "." then newDir = getDateTime(Now)

'wscript.echo(fObj.ParentFolder)
if opp then
   newDir = WScript.Arguments(1) & newDir
   if nav = "L" then nav = "R"
else
   newDir = fObj.ParentFolder & "\" & newDir
end if
if not FSO.FolderExists(newDir) then
   FSO.CreateFolder(newDir)
end if

set list = FSO.OpenTextFile(WScript.Arguments(0), 1, false, true)

do until list.AtEndOfStream
   fName = list.ReadLine
   set fObj = getObj(fName)
   if not fObj is nothing then
      newPath = newDir & "\" & getNameOnly(fName)
'wscript.echo(newpath)
      if objExists(newPath) > 0 and confirmed = Empty then
         confirmed = MsgBox("Name conflict. Overwrite all? (“No” to skip all)" & vbCrLf & "Note: overwriting folders will delete contents", vbExclamation + vbYesNoCancel, "Confirm")
         if confirmed = vbCancel then exit do
      end if
      if objExists(newPath) = 0 then
         fObj.Move(newDir & "\")
      elseif confirmed = vbYes then
         getObj(newPath).Delete
         fobj.Move(newDir & "\")
      end if
   end if
loop

if nav <> "" then
   with CreateObject("WScript.Shell")
      .Run """%COMMANDER_EXE%"" /O /S /" & nav & "=""" & newDir & """", 0, true
      'if nav = "R" Then .SendKeys "{TAB}"
   end with
end if


function getObj(fl)
   if FSO.FileExists(fl) then
      set getObj = FSO.GetFile(fl)
   elseif FSO.FolderExists(fl) then
      set getObj = FSO.GetFolder(fl)
   else
      set getObj = nothing
   end if
end function

function getNameOnly(fl)
   if Right(fl, 1) = "\" then fl = Left(fl, Len(fl)-1)
   getNameOnly = FSO.GetFileName(fl)
end function

'0=not exists, 1=is file, 2=is folder
function objExists(name)
   if FSO.FileExists(name) then
      objExists = 1
   elseif FSO.FolderExists(name) then
      objExists = 2
   else
      objExists = 0
   end if
end function

function getDateTime(dt)
    s = datepart("yyyy",dt)
    s = s & "-" & RIGHT("0" & datepart("m",dt),2)
    s = s & "-" & RIGHT("0" & datepart("d",dt),2)
    s = s & "_"
    s = s & RIGHT("0" & datepart("h",dt),2)
    s = s & "-" & RIGHT("0" & datepart("n",dt),2)
    s = s & "-" & RIGHT("0" & datepart("s",dt),2)
    getDateTime = s
end function
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 9033
Location: Россия, Саратов

Post (Separately) Posted: Thu Oct 09, 2014 19:01    Post subject: Reply with quote

helb wrote:
Обычное копирование/перемещение тоже работает

По исходным условиям тут (если, конечно, с обеих сторон одну и тут же папку не открывать) должно быть не обычное копирование/переименование (F5/F6), а копирование/переименование выделенных файлов в папку, создаваемую в том же каталоге. То есть Shift+F5/Shift+F6.
А, по скрипту, полагаю, специалисты своё слово скажут.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
helb



Joined: 08 Oct 2014
Posts: 52

Post (Separately) Posted: Thu Oct 09, 2014 19:38    Post subject: Reply with quote

Avada
Вы просто попробуйте, если конечно не каким-нибудь древним ТС пользуетесь, где этого могло не быть.
Работает так же прямолинейно и просто как F6 → “..” для перемещения на уровень вверх, пути-то в этих случаях относительные (к текущей активной панели).
Back to top
View user's profile Send private message
Avada



Joined: 01 Aug 2008
Posts: 9033
Location: Россия, Саратов

Post (Separately) Posted: Thu Oct 09, 2014 20:24    Post subject: Reply with quote

helb
С версиями у меня всегда всё в порядке. Smile Да, идею понял.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12977
Location: Москва

Post (Separately) Posted: Thu Oct 09, 2014 23:34    Post subject: Reply with quote

 to Avada

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2223

Post (Separately) Posted: Fri Oct 10, 2014 01:00    Post subject: Reply with quote

helb wrote:
Обычное копирование/перемещение тоже работает

А если в пассивной панели открыта системная папка?
Back to top
View user's profile Send private message
helb



Joined: 08 Oct 2014
Posts: 52

Post (Separately) Posted: Fri Oct 10, 2014 01:58    Post subject: Reply with quote

Flasher wrote:
там всё на аглицком
Нет, не на аглицком, а на VBScript'е :)

sa wrote:
А если в пассивной панели открыта системная папка?

Ну так диалоги Shift+F5/Shift+F6 так же работают.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 12977
Location: Москва

Post (Separately) Posted: Fri Oct 10, 2014 02:25    Post subject: Reply with quote

helb wrote:
Нет, не на аглицком, а на VBScript'е Smile
А это хто? Shocked
Ладно, шутки шутками. Про шапку я, про шааапку. Ну привыкли мы тут на родном языке для русскоговорящих изъясняться, на инордном не шпрэхаем. Wink
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2223

Post (Separately) Posted: Fri Oct 10, 2014 09:36    Post subject: Reply with quote

helb wrote:
Ну так диалоги Shift+F5/Shift+F6 так же работают.

У меня не было сомнений по этому поводу. Потому и предложил вариант с Ctrl+Alt+Shift+F5 с назначенной командой cm_PackFiles.
Но для случая системной папки в активной панели, он тоже не работает.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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