View previous topic :: View next topic |
Author |
Message |
soscock
Joined: 24 Jun 2007 Posts: 10
|
(Separately) Posted: Wed Jun 27, 2007 07:02 Post subject: Попытки обойти ограничение на длину строки в диалоге F7 |
|
|
Batya wrote: | привожу переделанный скрипт, который разбивает строку при необходимости на несколько |
Круто ! Работает! Большое спасибо.
Раз уж вы мастер делимитирования длин строк, то может быть сможете решить проблему с ограничением на длину строки, вставляемой из буфера для создания множества каталогов по F7? TC принимает эту строку очень ограниченной, что не позволяет создать одновременно каталогов, скажем, 200. Ну или даже 50.
В своём вопросе я имею в виду использование замечательного способа создания нескольких каталогов из текстовой строки, где имена каталогов разделены "|". Вопрос поднимал в отдельной теме, но более конструктивного ответа, кроме "нельзя", пока нет.
CaptainFlint:
Обсуждение выделено из темы Копировать один файл в несколько папок сразу! в отдельную ветку.
Моторокер
Перенесено из Секретов в Автоматизацию. |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Thu Jun 28, 2007 09:28 Post subject: |
|
|
К сожалению, я тоже отвечу "нельзя". В данном случае это интерфейсное ограничение на длину поля ввода имени (имен) создаваемой папки (папок) в соответствующем окне.
Однако, я могу создать скрипт, создающий папки, имена которых лежат в каком-нибудь источнике, размер которого менее ограничен. Таким источником может быть буфер обмена или файл. Только мне нужно четко знать его структуру (любую по желанию). _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
soscock
Joined: 24 Jun 2007 Posts: 10
|
(Separately) Posted: Fri Jun 29, 2007 05:24 Post subject: |
|
|
Batya wrote: | К сожалению, я тоже отвечу "нельзя". В данном случае это интерфейсное ограничение на длину поля ввода имени (имен) создаваемой папки (папок) в соответствующем окне.
Однако, я могу создать скрипт, создающий папки, имена которых лежат в каком-нибудь источнике, размер которого менее ограничен. Таким источником может быть буфер обмена или файл. Только мне нужно четко знать его структуру (любую по желанию). |
Действительно к сожалению, но в данном случае хотя бы ясно - почему). Спасибо.
Если создадите описанный скрипт, то думаю многие будут Вам благодарны, так как функция очень часто востребована.
Что касается источника, то здесь скорее всего надо плясать от универсального формата. Лучше текстового файла не придумать. То есть, фактически, имена папок в таком файте перечислены в одну строку с тем же разделителем "|". |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Fri Jun 29, 2007 12:07 Post subject: |
|
|
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. Например:
Также по желанию можно менять переменную IsPassExt (варианты - False\True), смысл которой, я думаю, понятно описан в шапке скрипта.
CapitanFlint
Выдели, пожалуйста, несколько последних постов в отдельную тему. |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Fri Jun 29, 2007 13:52 Post subject: |
|
|
Выделил. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
soscock
Joined: 24 Jun 2007 Posts: 10
|
(Separately) Posted: Fri Jun 29, 2007 19:02 Post subject: |
|
|
Batya, большое Вам спасибо. |
|
Back to top |
|
|
krugerand
Joined: 01 Aug 2009 Posts: 7
|
(Separately) Posted: Sat Aug 01, 2009 21:38 Post subject: |
|
|
Замечательный скрипт, часто выручает при создании многоуровневой структуры папок, выходящей из одного корня. А нельзя ли автоматизировать этот процесс, но с возможностью «возвращаться» для создания и других корней с их ветками папок?
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 |
|
|
Моторокер
Joined: 06 May 2005 Posts: 1517 Location: г. Пермь (читается Перьмь)
|
(Separately) Posted: Mon Aug 10, 2009 00:32 Post subject: |
|
|
Наверняка список каталогов создаётся как-то автоматически.
Почему бы сразу не создавать эти каталоги на диске, либо писать в cmd (bat) файл и запускать его? _________________ плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2218 Location: Москва, Россия
|
(Separately) Posted: Sun Aug 16, 2009 12:51 Post subject: |
|
|
Готов переделать скрипт.
Мне только нужно видеть, как выглядит содержимое файла-списка. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
|
|
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
|