View previous topic :: View next topic |
Author |
Message |
Student22
Joined: 03 Oct 2014 Posts: 1
|
(Separately) Posted: Fri Oct 03, 2014 23:36 Post subject: Создание папки с выделенными файлами |
|
|
Подскажите, как автоматически создать папку с уже выделенными файлами. Чтобы выделил файлы и создалась папка с ними в этой же вкладке. Такое вобще можно реализовать? |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10315 Location: Россия, Саратов
|
(Separately) Posted: Sat Oct 04, 2014 00:48 Post subject: |
|
|
Student22
Во-первых, обычно такие вопросы задаются в подфоруме по автоматизации (куда эта тема и переносится). Во-вторых, сама задача поставлена не вполне вразумительно. "Создалась папка с ними в этой же вкладке" — это что, копирование? перемещение? И речь, разумеется, должна идти не о той же вкладке, а о том же каталоге.
В случае перемещения это вообще стандартный функционал TC, реализованный через инструмент группового переименования (имя_ каталога\[N], есть в справке, обcуждалось на форуме). _________________ Даже самая богатая фантазия
Не представит себе наши безобразия.
Last edited by Avada on Sat Oct 04, 2014 11:50; edited 1 time in total |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2624
|
(Separately) Posted: Sat Oct 04, 2014 10:40 Post subject: |
|
|
Кнопка с использованием утилиты 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 |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Oct 04, 2014 13:01 Post subject: |
|
|
sa
Телепатишь? Или в личке узнал, что это перемещение, а не копирование
P.S.: И спрошено неспроста. Теме светит мод, ибо ответы уже давались. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2624
|
(Separately) Posted: Sat Oct 04, 2014 15:25 Post subject: |
|
|
Flasher wrote: | Или в личке узнал, что это перемещение, а не копирование |
Нет, не узнал. Разница не велика: для копирования достаточно заменить 906 на 905. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2624
|
(Separately) Posted: Wed Oct 08, 2014 10:11 Post subject: |
|
|
Для независимости работы вышеприведённой кнопки от состояния пассивной панели (например, когда в ней открыт архив) модифицировал её, применив вместо команды "Переименовать/переместить файлы" команду "Упаковать файлы в текущий каталог (удалив исходные)". Чтобы включить эту команду, не забудьте ввести в 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 |
|
|
helb
Joined: 08 Oct 2014 Posts: 57
|
(Separately) Posted: Thu Oct 09, 2014 18:20 Post subject: |
|
|
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 |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10315 Location: Россия, Саратов
|
(Separately) Posted: Thu Oct 09, 2014 19:01 Post subject: |
|
|
helb wrote: | Обычное копирование/перемещение тоже работает |
По исходным условиям тут (если, конечно, с обеих сторон одну и тут же папку не открывать) должно быть не обычное копирование/переименование (F5/F6), а копирование/переименование выделенных файлов в папку, создаваемую в том же каталоге. То есть Shift+F5/Shift+F6.
А, по скрипту, полагаю, специалисты своё слово скажут. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
helb
Joined: 08 Oct 2014 Posts: 57
|
(Separately) Posted: Thu Oct 09, 2014 19:38 Post subject: |
|
|
Avada
Вы просто попробуйте, если конечно не каким-нибудь древним ТС пользуетесь, где этого могло не быть.
Работает так же прямолинейно и просто как F6 → “..” для перемещения на уровень вверх, пути-то в этих случаях относительные (к текущей активной панели). |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10315 Location: Россия, Саратов
|
(Separately) Posted: Thu Oct 09, 2014 20:24 Post subject: |
|
|
helb
С версиями у меня всегда всё в порядке. Да, идею понял. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2624
|
(Separately) Posted: Fri Oct 10, 2014 01:00 Post subject: |
|
|
helb wrote: | Обычное копирование/перемещение тоже работает |
А если в пассивной панели открыта системная папка? |
|
Back to top |
|
|
helb
Joined: 08 Oct 2014 Posts: 57
|
(Separately) Posted: Fri Oct 10, 2014 01:58 Post subject: |
|
|
Flasher wrote: | там всё на аглицком | Нет, не на аглицком, а на VBScript'е :)
sa wrote: | А если в пассивной панели открыта системная папка? |
Ну так диалоги Shift+F5/Shift+F6 так же работают. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Oct 10, 2014 02:25 Post subject: |
|
|
helb wrote: | Нет, не на аглицком, а на VBScript'е | А это хто?
Ладно, шутки шутками. Про шапку я, про шааапку. Ну привыкли мы тут на родном языке для русскоговорящих изъясняться, на инордном не шпрэхаем. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
sa
Joined: 29 Apr 2009 Posts: 2624
|
(Separately) Posted: Fri Oct 10, 2014 09:36 Post subject: |
|
|
helb wrote: | Ну так диалоги Shift+F5/Shift+F6 так же работают. |
У меня не было сомнений по этому поводу. Потому и предложил вариант с Ctrl+Alt+Shift+F5 с назначенной командой cm_PackFiles.
Но для случая системной папки в активной панели, он тоже не работает. |
|
Back to top |
|
|
|
|
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
|