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 

Попытки обойти ограничение на длину строки в диалоге F7

 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
soscock



Joined: 24 Jun 2007
Posts: 10

Post (Separately) Posted: Wed Jun 27, 2007 07:02    Post subject: Попытки обойти ограничение на длину строки в диалоге F7 Reply with quote

Batya wrote:
привожу переделанный скрипт, который разбивает строку при необходимости на несколько

Круто ! Работает! Большое спасибо.

Раз уж вы мастер делимитирования длин строк, то может быть сможете решить проблему с ограничением на длину строки, вставляемой из буфера для создания множества каталогов по F7? TC принимает эту строку очень ограниченной, что не позволяет создать одновременно каталогов, скажем, 200. Ну или даже 50.

В своём вопросе я имею в виду использование замечательного способа создания нескольких каталогов из текстовой строки, где имена каталогов разделены "|". Вопрос поднимал в отдельной теме, но более конструктивного ответа, кроме "нельзя", пока нет.

CaptainFlint:
Обсуждение выделено из темы Копировать один файл в несколько папок сразу! в отдельную ветку.

Моторокер
Перенесено из Секретов в Автоматизацию.
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Thu Jun 28, 2007 09:28    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: Fri Jun 29, 2007 05:24    Post subject: Reply with quote

Batya wrote:
К сожалению, я тоже отвечу "нельзя". В данном случае это интерфейсное ограничение на длину поля ввода имени (имен) создаваемой папки (папок) в соответствующем окне.
Однако, я могу создать скрипт, создающий папки, имена которых лежат в каком-нибудь источнике, размер которого менее ограничен. Таким источником может быть буфер обмена или файл. Только мне нужно четко знать его структуру (любую по желанию).


Действительно к сожалению, но в данном случае хотя бы ясно - почему). Спасибо.

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

Что касается источника, то здесь скорее всего надо плясать от универсального формата. Лучше текстового файла не придумать. То есть, фактически, имена папок в таком файте перечислены в одну строку с тем же разделителем "|".
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: 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
Выдели, пожалуйста, несколько последних постов в отдельную тему.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6151
Location: Москва

Post (Separately) Posted: Fri Jun 29, 2007 13:52    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: Fri Jun 29, 2007 19:02    Post subject: Reply with quote

Batya, большое Вам спасибо.
Back to top
View user's profile Send private message
krugerand



Joined: 01 Aug 2009
Posts: 7

Post (Separately) Posted: Sat Aug 01, 2009 21:38    Post subject: Reply with quote

Замечательный скрипт, часто выручает при создании многоуровневой структуры папок, выходящей из одного корня. А нельзя ли автоматизировать этот процесс, но с возможностью «возвращаться» для создания и других корней с их ветками папок?

Code:


   Корень 1
      Ветка 1-1
         Подветка 1-1-1
         Подветка 1-1-2
         Подветка 1-1-3
      Ветка 1-2
         Подветка 1-2-1
         Подветка 1-2-2
         Подветка 1-2-3
      Ветка 1-3
         Подветка 1-3-1
         Подветка 1-3-2
         Подветка 1-3-3

   Корень 2
      Ветка 2-1
         Подветка 2-1-1
         Подветка 2-1-2
         Подветка 2-1-3
      Ветка 2-2
         Подветка 2-2-1
         Подветка 2-2-2
         Подветка 2-2-3
      Ветка 2-3
         Подветка 2-3-1
         Подветка 2-3-2
         Подветка 2-3-3



 !  CaptainFlint:
Замечание за нарушение п. 13 правил. Дубликат сообщения в другой теме удалён.
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Mon Aug 10, 2009 00:32    Post subject: Reply with quote

Наверняка список каталогов создаётся как-то автоматически.
Почему бы сразу не создавать эти каталоги на диске, либо писать в cmd (bat) файл и запускать его?
_________________
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Back to top
View user's profile Send private message
Batya



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

Post (Separately) Posted: Sun Aug 16, 2009 12:51    Post subject: Reply with quote

Готов переделать скрипт.
Мне только нужно видеть, как выглядит содержимое файла-списка.
_________________
Нет, я не сплю. Я просто медленно моргаю.
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
Page 1 of 1

 
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