Проекты‎ > ‎

Скрипт для создания структуры папок, используя файл с отступами

Бывает, надо сделать много папок с подпапками. Можно, конечно, создавать их вручную, но, особенно если папок много, лучше использовать простенький скрипт AutoHotkey (AutoHotkey Download).
Список готовится в формате txt (ANSI либо UTF-8 с сигнатурой) следующего вида:
Папка
Ещё папка
    Подпапка
    Подпапка2
        Под-под-папка
            и так далее
    Подпапка3
Папка3
Папка4\Можно и так подпапки создавать
    Но тогда то, что ниже с отступом, будет в подпапке, а не в папке4

Отступ можно делать пробелами (любое количество), можно табуляцией (по умолчанию скрипт считает 1 таб за 8 пробелов). Запускать можно перетаскиванием списка на скрипт. Папки будут созданы в том же месте, где лежит список.

Скрипт:

#NoEnv


IndentLevels := {0:"."}
SplitPath 1, , DestPath
If DestPath
    SetWorkingDir %DestPath%

Loop Read, %1%
{
    PrevTrimmedDirName:=TrimmedDirName
    TrimmedDirName=%A_LoopReadLine%

    CurLevelSpaces=0
    Loop Parse, A_LoopReadLine
        If (A_LoopField==A_Space)
            CurLevelSpaces++
        Else If (A_LoopField==A_Tab)
            CurLevelSpaces+=8
        Else
            Break

    ;Cleanup and searching maxval less than current
    MaxPrevIndentLevel=0
    For IndentLevelSpaces, IndentPath in IndentLevels
    {
        If ( IndentLevelSpaces > CurLevelSpaces )
            IndentLevels.Remove(IndentLevelSpaces, IndentLevels.MaxIndex())
        Else If ( MaxPrevIndentLevel < IndentLevelSpaces )
            MaxPrevIndentLevel := IndentLevelSpaces
    }

    If ( CurLevelSpaces > MaxPrevIndentLevel ) ; It can be equ, but it can't be less, because all that were are removed in prev for.
        IndentLevels.Insert(CurLevelSpaces, IndentLevels[MaxPrevIndentLevel] . "\" . PrevTrimmedDirName)

    CurrentDirName := IndentLevels[CurLevelSpaces] . "\" . TrimmedDirName

    FileCreateDir %CurrentDirName%
}
SelectionFile type iconFile nameDescriptionSizeRevisionTimeUser
ċ

Скачать
  1 кб версия 1 11 мар. 2013 г., 7:34 Anton Derbenev
Comments