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
alexantey



Joined: 26 Feb 2014
Posts: 2

Post (Separately) Posted: Wed Feb 26, 2014 21:13    Post subject: Замена файлов в подпапках Reply with quote

Здравствуйте.
Прошу совета в следующей ситуации. В левой панели в папке есть файл, в правой панели - папка с вложенными подпапками и файлами в них. Возможно ли встроенными или сторонними средствами автоматически скопировать файл из левой панели в подпапку правой панели, в которой находится одноименный с копируемым файл? То есть сначала автоматически делается поиск местоположения одноименного файла в дереве соседней панели, а затем производится копирование именно в папку с найденным одноименным файлом (с запросом на замещение соответственно).
Спасибо.
Back to top
View user's profile Send private message
Avada



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

Post (Separately) Posted: Wed Feb 26, 2014 21:43    Post subject: Reply with quote

alexantey
Встроенными средствами это невозможно. Что касается сторонних средств, то для подобных запросов существует подфорум "Автоматизация", куда и переносится тема.
_________________
Даже самая богатая фантазия
Не представит себе наши безобразия.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Thu Feb 27, 2014 08:21    Post subject: Reply with quote

alexantey
Для поиска одноименного файла в дереве соседней панели можно воспользоваться скриптом . Если он подойдёт, то можно дополнить его тремя строчками для перехода, скажем, к первому из найденных дубликатов и вызова команды копирования.
Back to top
View user's profile Send private message
alexantey



Joined: 26 Feb 2014
Posts: 2

Post (Separately) Posted: Thu Feb 27, 2014 12:28    Post subject: Reply with quote

sa
спасибо, попробую.
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Sat Mar 01, 2014 17:48    Post subject: Reply with quote

alexantey wrote:
Возможно ли встроенными
Если файлов не так много (время поиска одноимённых файлов <5сек), то в версиях 8.5x можно обойтись и встроенными. Надо будет создать пользовательскую команду em_SelTrgFile, где в поле Команда: записать SELECTFILES, а в поле Параметры: "%M" и воспользоваться кнопкой:
Code:
TOTALCMD#BAR#DATA
4001,4002,540,2026,em_SelTrgFile,2023,2050,2026,4001,3101

wcmicons.dll,14
Cкопировать файл из левой панели в подпапку правой панели, в которой находится одноименный с копируемым файл


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



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

Post (Separately) Posted: Sat Mar 01, 2014 19:55    Post subject: Reply with quote

Тут всё проще:
Code:
'===============================================================
' Замена одноимённых файлов в структуре каталога целевой панели
' с запросом на перезапись

' Параметры: %V "%T" [<запрос на перезапись: 1>]
'===============================================================
With WScript.Arguments
  File = .Item(0) : Path = .Item(1)
  If .Count = 3 Then Query = .Item(2)
End With

Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FileExists(File) And FSO.FolderExists(Path) Then
  FName = FSO.GetFileName(File) : FFolder FSO.GetFolder(Path)
End If : Set FSO = Nothing : WScript.Quit

Sub FFolder(Folder)
  F = Folder.Path & "\" & FName
  If FSO.FileExists(F) Then
    M = 6
    If Query = 1 Then M = MsgBox("Перезаписать файл " & F & " ?", 36)
    If M = 6 Then FSO.CopyFile File, Folder.Path & "\"
  End If : For Each Fd In Folder.SubFolders : FFolder Fd : Next
End Sub
Можно, конечно, добавить сравнение по размеру/хэшу, если совсем приспичит.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Mar 01, 2014 20:25    Post subject: Reply with quote

CMD
Code:
@echo off &setlocal enableextensions
::   Замена одноимённых файлов в структуре каталога целевой панели
::   Параметры:   "%P%O.%E" "%T"

pushd %2
for /f "delims=" %%f in ('dir /b/a-d/s "%~2%~nx1" 2^>nul') do (
   xcopy /fhrkyz %1 "%%f"
)
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Mar 01, 2014 21:59    Post subject: Reply with quote

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



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Sat Mar 01, 2014 22:11    Post subject: Reply with quote

Если одноимённых файлов в правой панели может быть несколько, то предложенная кнопка немного упростится, а в диалоге копирования TC нужно будет указать опцию “Копировать во все выделенные папки/ссылки целевой панели” :
Code:
TOTALCMD#BAR#DATA
4001,4002,540,2026,em_SelTrgFile,2023,4001,3101

wcmicons.dll,14
Cкопировать файл из левой панели в подпапки правой панели, в которых находится одноименный с копируемым файл


-1
Как вариант, здесь можно отказаться от копирования единственного файла, выделить в левой панели произвольную группу файлов и скопировать уже её по выделенным папкам/ссылкам правой панели.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Mar 01, 2014 22:28    Post subject: Reply with quote

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



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Sat Mar 01, 2014 22:35    Post subject: Reply with quote

Flasher wrote:
про то, что корень целевой папки задействовать не надо.

А у меня и нет такого ограничения.
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Mar 01, 2014 22:42    Post subject: Reply with quote

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



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Sat Mar 01, 2014 22:50    Post subject: Reply with quote

Flasher wrote:
Как это нет?

Кнопка не так сложна, чтобы её не проверить…
Back to top
View user's profile Send private message
Flasher



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

Post (Separately) Posted: Sat Mar 01, 2014 23:10    Post subject: Reply with quote

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



Joined: 29 Apr 2009
Posts: 2563

Post (Separately) Posted: Sun Mar 02, 2014 00:00    Post subject: Reply with quote

Flasher wrote:
Как она (а точнее ТС) может копировать в выделенные файлы?

Нажми Ctrl+B, выдели два файла (принадлежащие разным папкам), перейди на другую панель и скопируй из неё файл с указанием опции “Копировать во все выделенные папки/ссылки целевой панели”. Какой результат?
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