Batya

|
Posted: Tue Jun 26, 2007 17:57 Post subject: |
|
|
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 |
|
|