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: Попытки обойти ограничение на длину строки в диалоге F7 
Author Message
Batya



PostPosted: Fri Jun 29, 2007 12:07    Post subject: Reply with quote

soscock wrote:
Если создадите описанный скрипт, то думаю многие будут Вам благодарны, так как функция очень часто востребована.

Code:
'================================================================================
' Создание папок по содержимому файла

' Параметры вызова:
' {Родительская папка для создаваемых} {Файл, содержащий имена создаваемых папок}

' Возможные варианты вызова из TC:
' --------------------------------
' "%T" %F
' Создает в противоположной панели папки по именам папок\файлов,
'   выделенных в текущей панели
' --------------------------------
' "%P" C:\Tmp\FoldList.txt
' Создает в текущей панели папки по именам, указанным в файле C:\Tmp\FoldList.txt
' --------------------------------
' "%P" %F
' Создает в текущей панели папки по именам, выделенных файлов
'   (Внимание, при этом переменная IsPassExt должна иметь значение True)
'================================================================================
Option Explicit
Dim Delim, IsPassExt
'========================== Изменяемые параметры ================================
Delim     = vbNewLine 'Разделитель имен папок в исходном файле
IsPassExt = True      'Признак исключения расширения для имен новых папок,
                      '  если в исходном файле-списке указано имя с расширением
'================================================================================
If WScript.Arguments.Count < 2 Then
  MsgBox "Неправильно заданы параметры!", _
         vbOKOnly + vbExclamation, _
         "Создание папок по содержимому файла"
  WScript.Quit
End If
Dim FSO, ParentFold, FoldList, FoldArr, F, OTF
Set FSO = CreateObject("Scripting.FileSystemObject")
ParentFold = WScript.Arguments(0)
FoldList   = WScript.Arguments(1)
If Not Right(ParentFold, 1) = "\" Then
  ParentFold = ParentFold & "\"
End If
If Not FSO.FolderExists(ParentFold) Then
  MsgBox "Неправильно указана родительская папка!", _
         vbOKOnly + vbExclamation, _
         "Создание папок по содержимому файла"
  Set FSO = Nothing
  WScript.Quit
End If
If Not FSO.FileExists(FoldList) Then
  MsgBox "Неправильно указан файл со списком создаваемых папок!", _
         vbOKOnly + vbExclamation, _
         "Создание папок по содержимому файла"
  Set FSO = Nothing
  WScript.Quit
End If

Set OTF = FSO.OpenTextFile(FoldList, 1)
FoldArr = Split(OTF.ReadAll, Delim)
OTF.Close

For Each F In FoldArr
  If IsPassExt Then
    CreateFold(ParentFold & FSO.GetBaseName(F))
  Else
    If Right(F, 1) = "\" Then
      F = Left(F, Len(F) - 1)
    End If
    CreateFold(ParentFold & F)
  End If
Next

Set OTF = Nothing
Set FSO = Nothing
WScript.Quit

Sub CreateFold(Fold)
  If Not FSO.FolderExists(Fold) Then
    FSO.CreateFolder(Fold)
  End If
End Sub

Сейчас в скрипте по умолчанию в качестве разделителя для файла, содержащего список создаваемых папок, установлен перенос строки. Если файл будет содержать другие разделители, то надо изменить значение переменной Delim. Например:
Code:
Delim     = "|"

Также по желанию можно менять переменную IsPassExt (варианты - False\True), смысл которой, я думаю, понятно описан в шапке скрипта.

CapitanFlint
Выдели, пожалуйста, несколько последних постов в отдельную тему.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group