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 

Single Post  Topic: Копировать один файл в несколько папок сразу! 
Author Message
Batya



PostPosted: 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
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group