View previous topic :: View next topic |
Author |
Message |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Wed May 09, 2012 00:19 Post subject: Воспроизведение в структуре каталогов недостающих файлов |
|
|
Здравствуйте.
Созданная тема, является логическим продолжением данной
темы в виду изменения в ней поставленной задачи, и в связи с отсутствием окончательного решения.
На данный момент, пытаюсь решить такую проблему:
Есть определенная структура каталогов, с разными именами, и разными уровнями вложенности.
Во многих каталогах, присутствуют различные типы файлов (графика, мультимедиа, и другие, в том числе могут находится и файлы с расширениями htm,html).
Моя задача, поместить в определенные каталоги,(отсчёт глубины может задаваться в окне, и производится от корня диска 0,1,2,3 и т.д) - определенное количество html файлов, (количество файлов также, может быть заданно в окне при помещении) ясно, что в каждый из каталогов, находящихся на одном уровне, - попадет одинаковое количество файлов.
В случае совпадения, с именем уже существующих в каталоге html файлов, должно произойти автоматическое переименование по счетчику, пример: - имя_файла(1).html.
Сами html файлы в итоге,- должны иметь имена тех же каталогов,- в которые они помещаются, и создаваться из одного (исходного шаблона) html.
В принципе можно использовать групповое переименование после их помещения, но если есть единое, комплексное, - решение это будет удобнее.
В дальнейшем, будет выполнено редактирование созданных файлов для их взаимосвязи с другими файлами.(но это уже отдельно)
Как лучше это осуществить. Спасибо. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed May 09, 2012 01:11 Post subject: |
|
|
shveicar wrote: | ясно, что в каждый из каталогов, находящихся на одном уровне, - попадет одинаковое количество файлов. | А на другом, получается, другое количество?
И как это кол-во определять? Как именовать копии? |
|
Back to top |
|
 |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Wed May 09, 2012 01:27 Post subject: |
|
|
Flasher Спасибо за отклик, доброй ночи.
Flasher wrote: | А на другом, получается, другое количество? |
А как могут на другом уровне возникнуть файлы, если речь идет о изначально заданной глубине вложенности? Только если повторно использовать скрипт, с другими параметрами..
Например: выделяем каталог с многоуровневой структурой. (файл шаблона находится в той же папке что и скрипт). В начале, появляется окно с уровнем глубины, а затем окно с количеством создаваемых файлов.
При такой схеме, будет удобно использовать для разных уровней - своих, индивидуальных шаблонов, что в дальнейшем позволит упростить их последующую схему редактирования.
Quote: | Как именовать копии? |
Изначально имя шаблона - например: shablon.html (это удобно, поскольку совпадения такого имени -маловероятны) - имеется ввиду возможный сценарий, с последующим групповым переименованием..
В этом случае, при создании копий будут последовательно добавляться цифры, например: shablon1.html, shablon2.html и тд. Если вдруг, все таки - в каталоге будет находиться файл с таким именем, - то к оригинальному имени будет добавляться еще одна цифра в скобках, например: shablon1(1).html
Если групповое переименование, можно задействовать сразу, при копировании, тогда схема та же, только в начале имени html файла -добавиться имя каталога, в который файлы перемещаются, например: folder1_shablon1.html это еще удобнее, поскольку такие файлы сразу будут выделятся, и их имена, в дальнейшем, можно всегда изменить.
Last edited by shveicar on Wed May 09, 2012 01:52; edited 3 times in total |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Wed May 09, 2012 19:20 Post subject: |
|
|
Пробуем:
Code: | '=============================================================================
' Создание копий файла на указанной глубине вложенности в выделенных папках
' Приставка к имени копии файла = имени родительской папки
' Параметры: %L "<путь к файлу-шаблону>"
'=============================================================================
With WScript.Arguments
C = .Count : If .Count = 0 Then WScript.Quit
If C < 2 Then MsgBox "Укажите оба параметра!", 48
List = .Item(0) : Templ = .Item(1)
End With : Const M = 1
Msg Count, " копий файла:"
Msg Depth, ", определяющее глубину вложенности от корня диска:"
Sub Msg(Sum, Word)
L = vbNewline : Sum = ""
Do Until IsNumeric(Sum)
Sum = InputBox(L&L&L&L&L& "Введите число" & Word,_
"Создание копий на нужной глубине", 3)
If Trim(Sum) = "" Then WScript.Quit
Loop
End Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetFileName(Templ) : BName = FSO.GetBaseName(Templ)
Ext = FSO.GetExtensionName(Name)
With FSO.OpenTextFile(List, 1)
Do While Not .AtEndOfStream
F = Trim(.ReadLine)
If F <> "" Then
If FSO.FolderExists(F) Then ForFolders F, Depth, Count, Name, BName, Ext, Templ
End If
Loop : .Close
End With : Set FSO = Nothing : WScript.Quit
Sub ForFolders(Fold, D, Cnt, FName, BN, E, Tml)
Set SubF = FSO.GetFolder(Fold).SubFolders
If SubF.Count > 0 Then
For Each Folder in SubF
Max = UBound(Split(Folder, "\")) + 1
If Max = Abs(D) Then
FoldName = FSO.GetFileName(Folder) : BN1 = FoldName & "_" & BN
For i = 1 to Cnt
N1 = FoldName & "_" & FName : l = 0
Do While FSO.FileExists(Folder & "\" & N1)
l = l + 1
If l < 10^M Then PostFix = Right(String(M, "0") & l, M) Else PostFix = l
N1 = BN1 & " (" & PostFix & ")." & E
Loop
FSO.CopyFile Tml, Folder & "\" & N1
Next
ElseIf Max < Abs(D) Then ForFolders Folder, D, Cnt, FName, BN, E, Tml
End If
Next
End If
End Sub |
Last edited by Flasher on Sat May 12, 2012 19:40; edited 1 time in total |
|
Back to top |
|
 |
shveicar

Joined: 18 Apr 2011 Posts: 277 Location: Россия Москва
|
(Separately) Posted: Wed May 09, 2012 21:33 Post subject: |
|
|
Flasher
Просто "Волшебство" Что еще можно добавить...
Разве, только, - Большое Спасибо, за проделанную работу.  |
|
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
|