Batya

|
Posted: Mon Jan 31, 2011 15:51 Post subject: |
|
|
vbs:
Code: | '=====================================================================
' Создание дерева папок из текстового файла вида
' [Родительская папка 1]
' Дочерняя папка 1
' ...
' Дочерняя папка N1
' ...
' [Родительская папка M]
' Дочерняя папка 1
' ...
' Дочерняя папка NN
' Параметры:
' {файл-список} [{текущая папка}]
' Пример параметров при вызове из TC:
' "C:\Путь\Файл-список.txt" "%P"
'=====================================================================
Option Explicit
Dim CharArr
'======== Изменяемые параметры =======================================
'Массив недопустимых символов имени. Заменяем их указанным ниже символом
CharArr = Split("\ / * ? "" < > | :")
'Символ для замены недопустимого символа
Const ReplaceChar = " "
'Признак автоматической замены недопустимых символов: True\False
Const AutoReplace = False
'=====================================================================
Dim FSO, FF, F, CurrentFolder, ParentFolder, Errors
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
FF = .Arguments(0)
If .Arguments.Count > 1 Then
CurrentFolder = .Arguments(1)
Else
CurrentFolder = CreateObject("WScript.Shell").CurrentDirectory
End If
End With
If Right(CurrentFolder, 1) <> "\" Then CurrentFolder = CurrentFolder + "\"
With FSO.OpenTextFile(FF, 1)
Do While Not .AtEndOfStream
F = Trim(.ReadLine)
If F <> "" Then
If AutoReplace Then F = Trim(ReplaceInadmissibleChars(F))
If CheckInadmissibleChars(F) Then
If InStr(F, "[") > 0 Then
Errors = Errors & vbNewLine & F
Else
Errors = Errors & vbNewLine & "[" & ParentFolder & "] -> " & F
End If
Else
If InStr(F, "[") > 0 Then
ParentFolder = Trim(Mid(F, 2, Len(F) - 2))
CreateFolder CurrentFolder & ParentFolder
Else
CreateFolder CurrentFolder & ParentFolder & "\" & F
End If
End If
End If
Loop
End With
If Len(Errors) > 0 Then _
MsgBox "Следующие папки невозможно создать, т.к. в их именах указаны недопустимые символы " &_
"(""" & Join(CharArr) & """):" & vbNewLine & Errors, _
vbInformation + vbOKOnly, "Создание дерева папок"
Set FSO = Nothing
Wscript.Quit()
Sub CreateFolder(pPath)
If Not FSO.FolderExists(pPath) Then FSO.CreateFolder(pPath)
End Sub
Function ReplaceInadmissibleChars(pText)
Dim lC
ReplaceInadmissibleChars = pText
For Each lC In CharArr
ReplaceInadmissibleChars = Replace(ReplaceInadmissibleChars, lC, ReplaceChar)
Next
End Function
Function CheckInadmissibleChars(pText)
Dim lC
CheckInadmissibleChars = False
If Not AutoReplace Then
For Each lC In CharArr
If InStr(pText, lC) Then
CheckInadmissibleChars = True
Exit Function
End If
Next
End If
End Function
|
Текущая папка для создания дерева задаётся вторым параметром скрипта или используется текущая папка кнопки\команды (параметр "Путь запуска"). _________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Tue Feb 01, 2011 15:33; edited 3 times in total |
|