Замена файлов в подпапках
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Автоматизация Total Commander

#1: Замена файлов в подпапках Author: alexantey PostPosted: Wed Feb 26, 2014 21:13
    —
Здравствуйте.
Прошу совета в следующей ситуации. В левой панели в папке есть файл, в правой панели - папка с вложенными подпапками и файлами в них. Возможно ли встроенными или сторонними средствами автоматически скопировать файл из левой панели в подпапку правой панели, в которой находится одноименный с копируемым файл? То есть сначала автоматически делается поиск местоположения одноименного файла в дереве соседней панели, а затем производится копирование именно в папку с найденным одноименным файлом (с запросом на замещение соответственно).
Спасибо.

#2:  Author: AvadaLocation: Россия, Саратов PostPosted: Wed Feb 26, 2014 21:43
    —
alexantey
Встроенными средствами это невозможно. Что касается сторонних средств, то для подобных запросов существует подфорум "Автоматизация", куда и переносится тема.

#3:  Author: sa PostPosted: Thu Feb 27, 2014 08:21
    —
alexantey
Для поиска одноименного файла в дереве соседней панели можно воспользоваться скриптом . Если он подойдёт, то можно дополнить его тремя строчками для перехода, скажем, к первому из найденных дубликатов и вызова команды копирования.

#4:  Author: alexantey PostPosted: Thu Feb 27, 2014 12:28
    —
sa
спасибо, попробую.

#5:  Author: sa PostPosted: Sat Mar 01, 2014 17:48
    —
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

#6:  Author: FlasherLocation: Москва PostPosted: Sat Mar 01, 2014 19:55
    —
Тут всё проще:
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
Можно, конечно, добавить сравнение по размеру/хэшу, если совсем приспичит.

#7:  Author: Tol!kLocation: Арзамас PostPosted: Sat Mar 01, 2014 20:25
    —
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"
)

#8:  Author: FlasherLocation: Москва PostPosted: Sat Mar 01, 2014 21:59
    —
Tol!k
"%P%O.%E" - зачем так сложно?

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

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


-1
Как вариант, здесь можно отказаться от копирования единственного файла, выделить в левой панели произвольную группу файлов и скопировать уже её по выделенным папкам/ссылкам правой панели.

#10:  Author: FlasherLocation: Москва PostPosted: Sat Mar 01, 2014 22:28
    —
sa
В запросе про выделение в целевой панели чего-либо не писалось, как и про то, что корень её папки задействовать не надо.

#11:  Author: sa PostPosted: Sat Mar 01, 2014 22:35
    —
Flasher wrote:
про то, что корень целевой папки задействовать не надо.

А у меня и нет такого ограничения.

#12:  Author: FlasherLocation: Москва PostPosted: Sat Mar 01, 2014 22:42
    —
Как это нет? Если ты выбираешь опцию для выделенных папок, то корень не будет затронут.

#13:  Author: sa PostPosted: Sat Mar 01, 2014 22:50
    —
Flasher wrote:
Как это нет?

Кнопка не так сложна, чтобы её не проверить…

#14:  Author: FlasherLocation: Москва PostPosted: Sat Mar 01, 2014 23:10
    —
Я пока твою кнопку не понял. Как она (а точнее ТС) может копировать в выделенные файлы? Ты сам то своё добро тестировал?

#15:  Author: sa PostPosted: Sun Mar 02, 2014 00:00
    —
Flasher wrote:
Как она (а точнее ТС) может копировать в выделенные файлы?

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



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group