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, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Vishes



Joined: 17 Jun 2006
Posts: 1

Post (Separately) Posted: Sat Jun 17, 2006 14:46    Post subject: Копировать один файл в несколько папок сразу! Reply with quote

Здравствуйте! интересует, есть ли возможность копировать один файл в несколько папок сразу! Обычными средствами Тотал Командера это невозможно! есть ли какие-нибудь мысли по этому поводу? может плагин уже придуман? я не нашел ничего.

а вещь по-моему вещь нужная.

 !  Avada:
Тема перенесена из "Секретов и советов" в "Автоматизацию".
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Sat Jun 17, 2006 15:00    Post subject: Reply with quote

Цитата из RU.TCKB:

Quote:
Q: Можно ли копировать в несколько папок? Типа: F5 - пишем E:\; F:\, он копирует туда и туда.

A: Нет, к сожалению. На днях обнаружил что тоже хочу такую фичу. Как вариант можно создать батничек, который будет копировать выбранный файл в нужные тебе заранее заготовленные папки.

Ergo

_________________
База знаний о Total Commander
Блог
Back to top
View user's profile Send private message
LocKtaR-o-DarK



Joined: 12 Aug 2005
Posts: 349
Location: Москва

Post (Separately) Posted: Mon Jun 19, 2006 04:02    Post subject: Reply with quote

Vishes
тут глянь, если нужно фоном, пиши сценарий или скрипт
Чтобы не писать "cd {папка}", просто с шифтом перетяни папку(и) на панель кнопок
_________________
        
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Wed Jun 21, 2006 02:08    Post subject: Reply with quote

Скрипт уже написан.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
jehaz



Joined: 24 May 2006
Posts: 16

Post (Separately) Posted: Fri Jun 23, 2006 15:01    Post subject: Reply with quote

Как наипростейший вариант для копирования одного файла во множество папок можно использовать следующую кнопку:

Code:
TOTALCMD#BAR#DATA
cmd /c
for /f "usebackq tokens=*" %%i in (%L) do copy %T%M "%%~di%%~pi"
C:\WINDOWS\explorer.exe,8
Копирование файла во множество папок


-1


Принцип такой… Ставишь курсор на копируемый файл, далее переходишь на другую панель, затем выделяешь папки куда копировать и жмешь кнопку. Кончно если использовать поиск то функция кнопки немного расширяется.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Fri Jun 23, 2006 18:28    Post subject: Reply with quote

LocKtaR-o-DarK предложил создать скрипт для копирования нескольких файлов в несколько каталогов. Это несложно сделать, используя Script Helper и KillCopy.
Скрипт *.vbs:
Code:
'========================================================
' Копирование выделенных файлов в несколько каталогов

' Параметры вызова из TC:
' %L
'========================================================
If WScript.Arguments.Count = 0 Then
  MsgBox "Не заданы параметры!", vbOKOnly + vbExclamation, "Копирование в несколько каталогов"
  WScript.Quit
End If
Dim TCS, WSH, Targets, TargStr
Set TCS = CreateObject("TCScript.Helper")
Set WSH = CreateObject("WScript.Shell")
Targets = TCS.GetTrgSelectedFiles(1)
TargStr = Join(Targets, "?")
WSH.Run "killcopy.exe |" & WScript.Arguments(0) & "|" & TargStr & "| -n", , 1
Set TCS = Nothing
Set WSH = Nothing
WScript.Quit

Как действует - выделяем каталоги КУДА копировать, переключаемся на другую панель, выделяем ЧТО копировать, запускаем скрипт.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2584
Location: Большая деревня Москва

Post (Separately) Posted: Sat Jun 24, 2006 23:55    Post subject: Reply with quote

Quote:
Как действует - выделяем каталоги КУДА копировать

Все здорово, если эти каталоги находятся в одной директории, а чаще всего это не так. Если у них есть общий критерий какой-нибудь, можно поиск и Feed to listbox. А твой скрипт работает в Tree view? Так или иначе, мне проще собрать "целевые" директории в виде вкладок на одной панели, а на другой - файлы для копирования.
А слабо написать скрипт, который копирует файлы из разных директорий в другие разные директории? Отвечаю сам себе - не слабо. Не слабо, но впадлу Smile Проще либо батник ad hoc, либо по очереди врукопашную. Есть и другие способы. Но мне чаще приходится копировать из одной директории в множество других.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Mon Jun 26, 2006 10:51    Post subject: Reply with quote

Вахмурка wrote:
Все здорово, если эти каталоги находятся в одной директории, а чаще всего это не так. Если у них есть общий критерий какой-нибудь, можно поиск и Feed to listbox. А твой скрипт работает в Tree view?

Как видишь, скрипт очень простой. Я не заморачивался сильно. Что предложили сделать, то я и реализовал. Если у кого-то в каком-либо режиме не работает, и ему НАДО, чтобы работало, сообщайте, буду пытаться подправить.

Вахмурка
Ты проверял в других режимах? Если - нет, то о чем разговор?
Список выделенных каталогов на панели назначения я получаю макросом из Script Helper. Так что, в случае проблем, будем пытать Volniy Very Happy
Back to top
View user's profile Send private message
soscock



Joined: 24 Jun 2007
Posts: 10

Post (Separately) Posted: Sun Jun 24, 2007 06:21    Post subject: Reply with quote

Скопировал код в текстовый файл, обозвал его "file_to_folders.vbs", втащил файл в панель кнопок Total'а, задал параметр "%L". Далее, в левом окне - тот файл, который надо копировать в несколько папок, в правом - эти папки, выделенные по Ins.

Жму на кнопку, выползает ошибка:

Заголовок - Windows Script Host
Script: Путь/к/скрипту
Line: 16
Char: 1
Error: The system cannot find the file specified.
Code: 80070002
Source: (null)

Подскажите пожалуйста решение, уж очень ваш скрипт полезный.
Back to top
View user's profile Send private message
aLexx



Joined: 14 Mar 2005
Posts: 442
Location: Новокузнецк

Post (Separately) Posted: Sun Jun 24, 2007 22:56    Post subject: Reply with quote

Batya wrote:
Это несложно сделать, используя Script Helper и KillCopy.

А у тебя обе эти проги установлены?
Back to top
View user's profile Send private message
soscock



Joined: 24 Jun 2007
Posts: 10

Post (Separately) Posted: Mon Jun 25, 2007 03:29    Post subject: Reply with quote

aLexx wrote:
Batya wrote:
Это несложно сделать, используя Script Helper и KillCopy.

А у тебя обе эти проги установлены?

Так подозреваю, что вопрос ко мне. Во избежание двусмысленности понимания полезно напрямую обращаться к тому, к кому адресуешься.

Нет, кроме TC, никаких вспомогательно-параллельных прог, у меня не установлено. Есть где-нибудь человечье объяснение - что и как установить? А то ведь простому юзеру, для которого TC и предназначен, только догадываться и остаётся.
Back to top
View user's profile Send private message
aLexx



Joined: 14 Mar 2005
Posts: 442
Location: Новокузнецк

Post (Separately) Posted: Mon Jun 25, 2007 07:34    Post subject: Reply with quote

2 soscock
Да, вопрос к тебе был... Ты правильно понял.

Script Helper имеется на http://wincmd.ru. Ставить надо в обязательном порядке, а то не будут работать
большинство из описанных на этом форуме скриптов WSH для ТС.
KillCopy тоже прога из разряда маст хаве. Очень удобна для скачивания файла из сети по FTP,
а также выдирания битого файла с порченных СД-ромов, например.
Так что ставь обе, будет только польза!
Back to top
View user's profile Send private message
soscock



Joined: 24 Jun 2007
Posts: 10

Post (Separately) Posted: Mon Jun 25, 2007 09:48    Post subject: Reply with quote

Спасибо, разобрался, всё работает.
Back to top
View user's profile Send private message
soscock



Joined: 24 Jun 2007
Posts: 10

Post (Separately) Posted: Tue Jun 26, 2007 07:38    Post subject: Reply with quote

Что-то скрипт "дозирует" копирование:

При попытке одновременного копирования двух файлов (производственная необходимость) сразу в более, чем примерно 15-20 каталогов, выдаёт ошибку: Line: 16, Char: 1, Error: Permission denied, Code: 800A0046...

А в принципе - скрипт мегаполезный, много времени сэкономил, большое человеческое автору.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2218
Location: Москва, Россия

Post (Separately) Posted: Tue Jun 26, 2007 17:57    Post subject: Reply with quote

soscock wrote:
Что-то скрипт "дозирует" копирование

Это ограничение на длину строки метода Run объекта WshShell, т.е., мягко говоря, на длину коммандной строки.
Не знаю, отличается ли этот лимит в зависимости от ОС. У себя на XP я опытным путем определил, что он равен 2060.
Соответственно, привожу переделанный скрипт, который разбивает строку при необходимости на несколько:
Code:
'========================================================
' Копирование выделенных файлов в несколько каталогов

' Параметры вызова из TC:
' %L
'========================================================
Option Explicit
If WScript.Arguments.Count = 0 Then
  MsgBox "Не заданы параметры!", vbOKOnly + vbExclamation, "Копирование в несколько каталогов"
  WScript.Quit
End If
Dim TCS, WSH, Targets, TargStr, CommandLineLimit, StrBeg, StrEnd, Delim, Pos, Start
CommandLineLimit = 2060
Delim   = "?"
Set TCS = CreateObject("TCScript.Helper")
Set WSH = CreateObject("WScript.Shell")
Targets = TCS.GetTrgSelectedFiles(1)
TargStr = Join(Targets, Delim)
StrBeg  = "killcopy.exe |" & WScript.Arguments(0) & "|"
StrEnd  = "| -nx"
Pos     = 0
Do
  TargStr = Mid(TargStr, Pos + 1)
  Start   = CommandLineLimit - Len(StrBeg) - Len(StrEnd)
  If Start <= Len(TargStr) Then
    Pos = InStrRev(TargStr, Delim, Start)
  Else
    Pos = Len(TargStr) + 1
  End If
  WSH.Run StrBeg & Left(TargStr, Pos - 1) & StrEnd, 7, True
Loop While Len(StrBeg) + Len(TargStr) + Len(StrEnd) > CommandLineLimit

Set TCS = Nothing
Set WSH = Nothing
WScript.Quit
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, 3  Next
Page 1 of 3

 
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