aLexx

|
Posted: Thu Nov 27, 2008 14:41 Post subject: |
|
|
| Code: | ' File: ZebraMark-2.vbs
' Description: Помечает все файлы и каталоги через один.
' Requirements: WSH Helper for TC by Volniy
' Copyright: (c) 2007, Volniy, aLexx
Option Explicit
Dim List, TCS, Cnt, Buf
Set TCS = CreateObject("TCScript.Helper")
TCS.SendCommand ("cm_SelectAll") 'Выбрать всё
TCS.SendCommand ("cm_CopyFullNamesToClip") 'Копируем в буфер
List = Split(TCS.GetTextFromClip,vbNewLine) ' Получаем массив имен
If UBound(List) > 2 Then
For Cnt=0 To UBound(List)
If Cnt Mod 2 = 1 Then
Buf = Buf & List(Cnt) & vbNewLine
End If
Next
TCS.SetTextToClip CStr(Buf)
TCS.SendCommand "cm_LoadSelectionFromClip", True
MsgBox "Выделено ""зеброй"":): " & Cnt \ 2 & " файлов и каталогов.", vbInformation, "Завершено!"
Else
TCS.SendCommand ("cm_ClearAll") 'Снять выделение
End If
Set TCS = Nothing
Set List = Nothing
Set Cnt = Nothing
Set Buf = Nothing
WScript.Quit
|
Очень активно используемый мной скрипт. Чуть переделанный скрипт от Volniy. Для удаления
дубликатов, одинаковых файлов. Но периодически, раз 5 из 100, скрипт не отрабатывает.
Пишет "Выделено "зеброй" : 0 файлов и каталогов.", хотя файлов море! Пришлось для обхода
этой ситуации ввести If...Else.
Выяснилось, что в этих случаях UBound(List) равен -1. Т.е., не отрабатывает строка
List = Split(... и т.д. А не отрабатывает потому, что не выполняется команда
"cm_CopyFullNamesToClip", т.е. буфер обмена пустой.
Может, это зависит от размера получаемого списка файлов? И "cm_CopyFullNamesToClip"
выполняется слишком долго? Или есть какой-то лимит на этот размер?
Иногда у меня этот список получается до 20 тыщ файлов! В тексте это более 3 метров.
Как это победить? |
|