Здравствуйте.
Созданная тема, является логическим продолжением данной
темы в виду изменения в ней поставленной задачи, и в связи с отсутствием окончательного решения.
На данный момент, пытаюсь решить такую проблему:
Есть определенная структура каталогов, с разными именами, и разными уровнями вложенности.
Во многих каталогах, присутствуют различные типы файлов (графика, мультимедиа, и другие, в том числе могут находится и файлы с расширениями htm,html).
Моя задача, поместить в определенные каталоги,(отсчёт глубины может задаваться в окне, и производится от корня диска 0,1,2,3 и т.д) - определенное количество html файлов, (количество файлов также, может быть заданно в окне при помещении) ясно, что в каждый из каталогов, находящихся на одном уровне, - попадет одинаковое количество файлов.
В случае совпадения, с именем уже существующих в каталоге html файлов, должно произойти автоматическое переименование по счетчику, пример: - имя_файла(1).html.
Сами html файлы в итоге,- должны иметь имена тех же каталогов,- в которые они помещаются, и создаваться из одного (исходного шаблона) html.
В принципе можно использовать групповое переименование после их помещения, но если есть единое, комплексное, - решение это будет удобнее.
В дальнейшем, будет выполнено редактирование созданных файлов для их взаимосвязи с другими файлами.(но это уже отдельно)
Как лучше это осуществить. Спасибо.
Воспроизведение в структуре каталогов недостающих файлов
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Flasher Спасибо за отклик, доброй ночи.
Например: выделяем каталог с многоуровневой структурой. (файл шаблона находится в той же папке что и скрипт). В начале, появляется окно с уровнем глубины, а затем окно с количеством создаваемых файлов.
При такой схеме, будет удобно использовать для разных уровней - своих, индивидуальных шаблонов, что в дальнейшем позволит упростить их последующую схему редактирования.
В этом случае, при создании копий будут последовательно добавляться цифры, например: shablon1.html, shablon2.html и тд. Если вдруг, все таки - в каталоге будет находиться файл с таким именем, - то к оригинальному имени будет добавляться еще одна цифра в скобках, например: shablon1(1).html
Если групповое переименование, можно задействовать сразу, при копировании, тогда схема та же, только в начале имени html файла -добавиться имя каталога, в который файлы перемещаются, например: folder1_shablon1.html это еще удобнее, поскольку такие файлы сразу будут выделятся, и их имена, в дальнейшем, можно всегда изменить.
А как могут на другом уровне возникнуть файлы, если речь идет о изначально заданной глубине вложенности? Только если повторно использовать скрипт, с другими параметрами..Flasher писал(а):А на другом, получается, другое количество?
Например: выделяем каталог с многоуровневой структурой. (файл шаблона находится в той же папке что и скрипт). В начале, появляется окно с уровнем глубины, а затем окно с количеством создаваемых файлов.
При такой схеме, будет удобно использовать для разных уровней - своих, индивидуальных шаблонов, что в дальнейшем позволит упростить их последующую схему редактирования.
Изначально имя шаблона - например: shablon.html (это удобно, поскольку совпадения такого имени -маловероятны) - имеется ввиду возможный сценарий, с последующим групповым переименованием..Как именовать копии?
В этом случае, при создании копий будут последовательно добавляться цифры, например: shablon1.html, shablon2.html и тд. Если вдруг, все таки - в каталоге будет находиться файл с таким именем, - то к оригинальному имени будет добавляться еще одна цифра в скобках, например: shablon1(1).html
Если групповое переименование, можно задействовать сразу, при копировании, тогда схема та же, только в начале имени html файла -добавиться имя каталога, в который файлы перемещаются, например: folder1_shablon1.html это еще удобнее, поскольку такие файлы сразу будут выделятся, и их имена, в дальнейшем, можно всегда изменить.
Последний раз редактировалось shveicar Ср май 09, 2012 01:52, всего редактировалось 3 раза.
Пробуем:
Код: Выделить всё
'=============================================================================
' Создание копий файла на указанной глубине вложенности в выделенных папках
' Приставка к имени копии файла = имени родительской папки
' Параметры: %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
Последний раз редактировалось Flasher Сб май 12, 2012 19:40, всего редактировалось 1 раз.