Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
6 / 6 / 0
Регистрация: 08.04.2022
Сообщений: 52

Нужен исходник по созданию определенного количества папок

04.05.2023, 11:27. Показов 5696. Ответов 115

Студворк — интернет-сервис помощи студентам
Доброго времени суток, пользуюсь скриптами... VBS PoSH, CMD там сделать множество каталогов не такая уж проблема, подумал пару месяцев назад подучить VB6, хотел посмотреть смогу ли использовать его в администрировании... но увы информации мало, да и программы нашел по мимо ТС-а, которые могут как переименовывать, так и создавать множество папок. А вот по VB так и не нашел ничего, хотелось бы найти исходник или пример... Если нет ни у кого на этом форуме, то и искать уже, наверное, бесполезно.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.05.2023, 11:27
Ответы с готовыми решениями:

Подсчитать количество символов в названиях папок и добить нулями до определённого количества
Привет всем! Необходимо решить очень сложную задачу... Что имеем: Есть неограниченное количество папок, их названия и длину названий...

Нужен исходник для расчёта комплектации материалов или т.п. Исходник с расчётами, таблицами
Добрый день всем) Нужна помощь. Занимаюсь расчётами стоимость материалов и стоимость в оконной конторе. Создал для себе эксель...

Батник по созданию папок
Всем привет. Помогите написать бат, который создает папку в папке. Например: Папка 1\Папка 2\Папка 3\ Папка 4\... и т.д.

115
Любитель
 Аватар для Тим70
1041 / 747 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
04.05.2023, 11:31
Addmmin, Посмотрите тут
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
04.05.2023, 12:52
Цитата Сообщение от Addmmin Посмотреть сообщение
А вот по VB так и не нашел ничего, хотелось бы найти исходник или пример... Если нет ни у кого на этом форуме, то и искать уже, наверное, бесполезно.
По VB можно найти все на свете. На нем с одинаковым успехом будут работать с небольшими правками коды VBS и почти без изменений VBA. VBA - практически родной брат VB.
Примеры правильных запросов:
"vb6 создание папок"
"vba создание папок" /vbs
Если хочется winapi-шной экзотики
"winapi vb создание папок"
или просто, забиваем в поиск "winapi создание папок", находим функцию "CreateDirectory". Далее забиваем в поиск
"Declare function CreateDirectory("
...
1
6 / 6 / 0
Регистрация: 08.04.2022
Сообщений: 52
04.05.2023, 16:02  [ТС]
Цитата Сообщение от testuser2 Посмотреть сообщение
По VB можно найти все на свете
Увы все ссылки ведут на не существующие страницы, материала действительно мало по VB а по VBS ее так вообще нет и даже не знаю поддерживается ли еще в последних версиях windows. Пробовал все кроме "winapi vb создание папок" вот посмотрю сейчас, а по VBA по этим запросом выдает не материалы не как создать несколько папок, а как создать по ним отчеты разные, перекопировать и т.п. И в принципе как создать одну папку нашел, если разобраться по лучше может получится, и хотелось чего-то с оконным интерфейсом. На само деле вдохновился образом Sys Admin Software iso, не знаю на сколько это актуально сейчас, но захотелось сделать что-то наподобие проще и для себя, и попробовать связку VB CMD или power shell, есть конечно и другой вариант, но с VB было бы по проще без установки дополнительного дистрибутива. А так если бы не это идея, то просто CMD бы хватило, если было нужно просто для создания списка папок или же дерево папок.
0
6 / 6 / 0
Регистрация: 08.04.2022
Сообщений: 52
04.05.2023, 16:30  [ТС]
Самое близкое что смог найти, создать папку tmp в корне диска C:\. И после запустить уже макрос. В остальном поиск выдает. Как получить список папок т.д.
Вложения
Тип файла: zip Список папок.zip (11.9 Кб, 30 просмотров)
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
04.05.2023, 16:42
Addmmin, про FSO не слышали?
0
Любитель
 Аватар для Тим70
1041 / 747 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
04.05.2023, 17:08
Addmmin, Вот пример создания пяти папок
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Command3_Click()
Dim ErrorCode As Integer, message As String, DirPath As String
Dim i As Integer, Path As String
 
    For i = 0 To 4
        Path = "c:\WA" & i ' даем имена папкам
     
    DirPath = Path
    ErrorCode = SHCreateDirectoryEx(Me.hwnd, DirPath, ByVal 0&)
    Select Case ErrorCode
     Case 0
     message = "Папка успешно создана"
     Case 80, 183
     message = "Уже есть такая папка"
     Case 161
     message = "Плохое имя папки"
     Case 206
     message = "Очень длинное имя папки"
     Case Else
     message = "Непредвиденная ошибка создания папки"
    End Select
      Print Path & "  " & message & ". Код ошибки  = " & ErrorCode
    Next i
End Sub
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
04.05.2023, 22:16
Я уже писал раньше функцию создания множества папок Как правильно подключать Reference библиотеки TLB и ActivX DLL

Добавлено через 8 минут
Цитата Сообщение от Тим70 Посмотреть сообщение
SHCreateDirectoryEx
Почему вы используете эту функцию вместо обычного CreateDirectory...
0
Любитель
 Аватар для Тим70
1041 / 747 / 161
Регистрация: 27.01.2019
Сообщений: 1,516
05.05.2023, 04:30
Цитата Сообщение от HackerVlad Посмотреть сообщение
Почему вы используете эту функцию вместо обычного CreateDirectory...
Просто я нашел пример на SHCreateDirectoryEx и он показался мне вполне работоспособным.
0
6 / 6 / 0
Регистрация: 08.04.2022
Сообщений: 52
05.05.2023, 11:11  [ТС]
Все что понял, это то, что это функция, и выдает ошибку и как иронично, если был программистом возможно мне никогда не понадобилось получения списка папок упорно выдаваемое и гуглом и яндексом, а создание попок скорее всего на первом уроке, только все что нашел не работает кроме примера с EXСEl выше. И вот еще рабочий вариант
Visual Basic
1
2
3
4
5
6
7
8
9
Private Sub Command1_Click()
On Error GoTo errorfolder:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateFolder "c:\new_folder"
errorfolder:
If Err = 58 Then MsgBox "File already exists"
Exit Sub
End Sub
До идеала не то, что далеко, даже не похоже. но хотя бы работает. Добавить сюда возможность создать несколько каталогов в код, или окном. Но уже понял что в это разобраться будет довольно сложно.
0
sleep
 Аватар для I can
4935 / 4617 / 841
Регистрация: 13.04.2015
Сообщений: 9,790
05.05.2023, 11:39
Visual Basic
1
2
3
4
Private Sub Command1_Click()
     On Error resume next
     mkdir "c:\new_folder"
End Sub
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
05.05.2023, 12:18
10 тыс. фолдеров за 2 сек.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Declare Function SHCreateDirectoryEx Lib "shell32" Alias "SHCreateDirectoryExA" (ByVal hwnd As Long, ByVal pszPath As String, ByVal psa As Long) As Long
 
Sub fafaf()
    Dim i&, t!
    Const fpath$ = "E:\TestFolder\Test1\fold"
    t = Timer
    For i = 1 To 10000
        SHCreateDirectoryEx 0, fpath & i, 0
    Next
    Debug.Print Timer - t
End Sub
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
05.05.2023, 12:35
Я уже скинул рабочий код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
' Функция создаёт ровно столько каталогов, сколько надо
Public Function MakeDir(Path As String) As Boolean
    On Error GoTo Quit
    
    Dim DirPath As String
    Dim CurrentDirPath As String
    Dim DirPathPenultimate As String
    Dim IsDir As Boolean
    Dim DirAttr As Long
    Dim pos As Long
    Dim f1 As Long
    Dim f2 As Long
    Dim i As Long
    
    DirPath = Path
    
    If Right$(DirPath, 1) = "\" Then
        DirPath = Left$(DirPath, Len(DirPath) - 1) ' Убрать на конце косую черту, если есть
    End If
    
    f1 = InStrRev(DirPath, "\")
    f2 = InStr(DirPath, "\")
    
    If f1 > 0 Then
        If f1 = f2 Then ' Только одна косая черта (создаётся каталог в корне диска)
            MkDir DirPath ' Err 75 or 76
            MakeDir = True
        Else ' Несколько косых черт (создаётся каталог, глубже чем в корне диска)
            DirPathPenultimate = Left$(DirPath, f1 - 1)
            
            If Dir$(DirPathPenultimate, vbDirectory + 7) <> vbNullString Then
                DirAttr = GetAttr(DirPathPenultimate)
                
                If (DirAttr And vbDirectory) <> 0 Then ' Если предпоследний каталог в цепочке действительно существует
                    MkDir DirPath ' Создаётся только один каталог
                    MakeDir = True
                    Exit Function
                End If
            End If
            
            ' Создаётся два или больше двух каталогов сразу
            DirPath = DirPath & "\"
            pos = 1
            
            Do
                i = InStr(pos, DirPath, "\") ' Искать нужную нам строку
                
                If i > 0 Then
                    CurrentDirPath = Mid$(DirPath, 1, i - 1)
                    IsDir = False
                    
                    If Dir$(CurrentDirPath, vbDirectory + 7) <> vbNullString Then
                        DirAttr = GetAttr(CurrentDirPath)
                        
                        If (DirAttr And vbDirectory) <> 0 Then
                            IsDir = True
                        End If
                    End If
                    
                    If IsDir = False Then MkDir CurrentDirPath: MakeDir = True
                    pos = i + 1
                End If
            Loop While i > 0 ' Выполнять цикл до тех пор, пока будет найдена искомая подстрока
        End If
    End If
Quit:
End Function
Можно создать сколько хочешь папок.
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
05.05.2023, 13:10
CreateDirectory 0,734375 c, MkDir 0,703125 c. создают папки только в существующем расположении. SHCreateDirectoryEx создает всю структуру вложенности, т.е. все папки, которые прописаны в пути.
Visual Basic
1
2
3
Private Declare Function CreateDirectory Lib "kernel32.dll" Alias "CreateDirectoryA" (ByVal lpPathName As String, ByVal lpSecurityAttributes As Long) As Long
***
        CreateDirectory fpath & i, 0&
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
05.05.2023, 13:28
Цитата Сообщение от testuser2 Посмотреть сообщение
создает всю структуру вложенности, т.е. все папки, которые прописаны в пути
Ну тогда проверь ещё и скорость моей функции, которую я написал выше
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
05.05.2023, 13:38
Цитата Сообщение от HackerVlad Посмотреть сообщение
Ну тогда проверь ещё и скорость моей функции
Она же на MkDir основана, он самый быстрый оказался (если на него ни чего не надстраивать)
Для общего образования ТС-у еще одна функция, принимающа параметр в виде указателя (1,882813 с). Возможно в ЯП с поддержкой указателей будет быстрее.
Visual Basic
1
2
3
Private Declare Function SHCreateDirectory Lib "shell32" (ByVal hwnd As Long, ByVal pszPath As LongPtr) As Long
***
SHCreateDirectory 0, StrPtr(fpath & i)
1
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
05.05.2023, 13:41
А SHCreateDirectoryEx сколько скорость? Ты не написал
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
05.05.2023, 13:43
Цитата Сообщение от HackerVlad Посмотреть сообщение
А SHCreateDirectoryEx сколько скорость?
Цитата Сообщение от testuser2 Посмотреть сообщение
10 тыс. фолдеров за 2 сек.
Около 2 сек.

Добавлено через 1 минуту
По грамотному наверное первый вызов можно делать SHCreateDirectoryEx, чтобы создал всю структуру (если она отсутствует), а остальные MkDir или CreateDirectory
0
Испарился
 Аватар для HackerVlad
1741 / 637 / 45
Регистрация: 10.09.2021
Сообщений: 2,769
05.05.2023, 13:46
Цитата Сообщение от testuser2 Посмотреть сообщение
CreateDirectory 0,734375 c, MkDir 0,703125 c
А эти тесты были на 10 тысяч папок??????

Добавлено через 2 минуты
Цитата Сообщение от testuser2 Посмотреть сообщение
As LongPtr
Что это ты придумал такое? LongPtr ну ты и выдумщик
0
1387 / 843 / 92
Регистрация: 08.02.2017
Сообщений: 3,593
Записей в блоге: 1
05.05.2023, 13:46
Цитата Сообщение от HackerVlad Посмотреть сообщение
А эти тесты были на 10 тысяч папок??????
Будь йа кретином, сделал бы не на 10 тыс. а на какое нибуь 89650010 ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.05.2023, 13:46
Помогаю со студенческими работами здесь

Реализовать подсчет количества слов из определенного количества букв в строке
Как на языке си реализовать подсчет количества слов из, например, трех букв в строке?

Нужен исходник
Нужен исходник в Делфи 7, для подбора 5 значного кода в закрытую область (от 0 до 99999) в программе Вася Диагност.

Нужен исходник приложения
Разработать приложение, демонстрирующее подсчет и вывод суммы и произведения чисел, которые выбираются из списков. Добавить splash форму...

Нужен исходник компилятора
Может быть, у кого-нибудь есть самопальные исходники компилятора языка С? (Очень желательно) Ну или, на худой конец, угостит ссылкой...

Нужен исходник сапера
Мне нужен исходник сапера на Visual Basic .net. Весь Google периискал подходящего исходники не нашел. :cry: Буду благодарен тому хто...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru