Ако прекарвате дните си в организиране на файлове, знаете колко досадно може да бъде да го правите ръчно, папка по папка. Със списък в Excel и няколко трика можете да се справите... десетки или стотици каскадни папки за секунди, без никакви проблеми. Ако също трябва да преименувате много файлове, вижте методи за групово преименуване на файлове.
В това ръководство ще видите три контрастни начина: от генериране на пакетен файл (.bat) с MD/MKDIR команди от Excel, през създаването на подпапки за всеки елемент, до завършването му с много кратък VBA макрос, който пита за път и диапазон и прави останалото на автопилот.
Какво означава да се създават каскадни папки?
Когато говорим за това да го правим „каскадно“, имаме предвид създаване на много папки (и техните подпапки) наведнъж, обикновено от списък с имена в Excel: клиенти, студенти, проекти и др. Това избягва необходимостта от създаването им едно по едно и също така поддържа еднакво оформление за всички.
Методите, които ще видите по-долу, са базирани на същата идея: Excel генерира команди, готови за изпълнение Или изпълнете макрос през диапазон и Windows ще свърши магията. Не са ви необходими никакви сложни инструменти; Excel, Notepad и интерпретаторът на команди на Windows са повече от достатъчни.

Метод 01: .bat файл от Excel (бърз и без код)
Това е най-прекият начин: Excel изгражда командния ред вместо вас. създавайте всяка папка с MD/MKDIR, копирайте резултата в Notepad, запазете го с разширение .bat и го стартирайте с двойно щракване. Идеално, ако искате незабавни резултати и не ви се занимава с макроси.
Първо подгответе листа. Да кажем, че в колона А имате имената (например, студенти), започващи с A3В колона Б, на височината B3, въведете формула, която съставя командата. Нуждаем се от MD (или MKDIR), интервал и името на папката в кавички, ако може да съдържа интервали. В Excel, за да се напишат кавички в низ, се използват екранирани двойни кавички. Типичен модел би бил:
=CONCAT("md ";"""";A3;"""")
С тази конструкция, Excel ще върне ред като мд «Име на студент» във всеки ред. Приложете тази формула надолу и ще имате толкова команди, колкото са елементите в списъка ви. Ако е по-удобно, можете да използвате MKDIR вместо MD (еквивалентни са в Windows) или да напишете командата с главни букви: MD o MKDIR те работят по един и същи начин.
В други случаи ще искате да комбинирате няколко колони (например, собствено и фамилно име). Много прост вариант е:
=CONCAT("MD ";A1;"-";B1)
С тази формула Excel ще генерира редове от типа Име-фамилия на лекарНастройте A1 и B1 според действителните си колони; ако пълното име може да съдържа интервали, не забравяйте да оградите частта с името в кавички, както е показано по-горе. Просто е като вмъкнете екранирани двойни кавички около препратката.
След като имате всички редове с техните команди, е време да ги прехвърлите в пакетен файл. Изберете колоната с командите, копирайте (Ctrl+C) и поставете (Ctrl+V) в Memo подложкаУверете се, че всяка команда е на отделен ред, една под друга, защото .bat файлът ще ги изпълни по ред.
Сега запазете файла. Отидете на Файл > Запиши като…, изберете лесно за намиране място и въведете име с разширение .bat, например: папки.batВажно: В полето „Запиши като тип“ изберете „Всички файлове“, за да не се запазва като .txt. С това вече имате пакетен изпълним файл, който Windows разпознава.
Време е да създадете папките. Намерете .bat файла и щракнете върху двойно щракванеЩе се отвори CMD прозорец, който ще изпълни всеки ред: след секунди ще видите всички папки да се появяват. Ако искате да бъдат създадени в определен път, поставете .bat файла в този път, преди да го изпълните, или добавете cd / d в началото на .bat файла, за да промените целевата директория. Ако нямате разрешение да създавате папки в местоположението, можете да използвате инструменти като AccessChek за разрешаване на проблеми с достъпа.
Метод 02: Създаване на подпапки за всеки елемент от списъка
Вторият подход е почти идентичен с предишния, но с нюанса, че Всяка главна папка се нуждае от няколко подпапки (например, „01_Студент“ с „Задачи“, „Изпити“ и „Архивиране“ вътре). Идеята е да се генерират множество MD редове за всеки запис или да се обединят пътища, които включват поднива.
Прост вариант: За всеки студент/проект, извлечете толкова редове, колкото са ви необходими подпапки. Представете си името на студента в A3. Можете да имате формули като тези в B, C и D:
=CONCAT("MD ";"""";A3;"""";"\Tareas")
=CONCAT("MD ";"""";A3;"""";"\Examenes")
=CONCAT("MD ";"""";A3;"""";"\Respaldo")
Всеки ред ще създаде подпапка под основната папка с името на ученика. Номерът е, че командата MD приема вложени маршрутиВ Notepad поставете всички редове един под друг и ги запазете в .bat файл, както преди. Ако ви е по-удобно, можете да генерирате трите свързани реда на клетка, разделени с нови редове, но на практика е по-чисто да имате по един ред на подпапка.
Ако предпочитате да комбинирате всичко в една колона, използвайте пълните пътища в кавичкиНапример, ако имате базов път в друга клетка (например E1), можете да изградите: MD """&E1&"\"&A3&"\Tareas""" и подобни за всяка подпапка. Ключът към това да не се провалите с интервалите е оградете пълния път в кавички, точно както направихте в метод 1 с простото име.
Оригиналното референтно съдържание обяснява, че този метод е „почти подобен“ на първия и препраща към видеоклип с подробности. Логиката, която трябва да следвате, е много проста: Повтаряте генерирането на MD веднъж за всяка подпапка които искате да бъдат в основната част на всеки елемент от списъка.
Метод 03: Макрос в Excel (VBA), който изисква път и диапазон
Ако предпочитате да натиснете бутон и всичко да се случва без копиране/поставяне, малък макрос във Visual Basic for Applications ви позволява да го направите. създаване на много папки за секунди Четене на имена от диапазон. Процесът е следният: запитване за пътя на местоназначението, запитване за началната клетка и след това четене надолу, докато има стойности.
Базовото предложение използва две полета за въвеждане (InputBox): едното за дестинация път и друг за първа клетка от списъка. След това преглежда клетките, докато намери празна и създава всяка папка. Ето адаптиран и коментиран пример:
Sub CrearCarpetasDesdeLista()
Dim ruta As String
Dim celdaInicio As Range
' Pedir ruta de destino
ruta = InputBox("Ingresar la ruta donde quieres crear las carpetas", "Formulario")
If Len(Trim(ruta)) = 0 Then Exit Sub
' Pedir la celda inicial del listado
On Error Resume Next
Set celdaInicio = Range(InputBox("Selecciona la primera celda del listado (por ejemplo, A3)", "Ingresar celda"))
On Error GoTo 0
If celdaInicio Is Nothing Then Exit Sub
' Recorrer y crear
Do While Len(celdaInicio.Value) > 0
' En el material original se utiliza "/" como separador; Windows lo tolera, aunque es más habitual "\"
MkDir ruta & "\" & celdaInicio.Value
Set celdaInicio = celdaInicio.Offset(1, 0)
Loop
End Sub
Предишният пример показва, че в референтно предложение Пътят е свързан с името, използвайки разделителя "/" (Windows го приема), но е обичайно да се използва "\". Друго нещо, което трябва да се има предвид, е, че ако папката вече съществува, MkDir хвърля грешкаМожете да увиете реда в обработка на грешки, ако това ви притеснява.
Оригиналният макрос, споменат в изходния материал, е определил логическата структура по следния начин: събира маршрут с Поле за въвеждане, попитайте за клетката, от която да генерирате папки, изберете тази клетка (Range(celda).Select), въведете Do While ActiveCell.Value <> "", използвайте MkDir с пътя и стойността на клетката и превъртете надолу един ред с ActiveCell.Offset(1, 0).Select докато не излезете от цикъла с LoopПредишният вариант избягва селекцията и работи с променливи от диапазон, което обикновено е по-стабилно.
Полезни варианти и разширения
Нуждаете ли се от папка за всеки ученик и в нея три фиксирани подпапки? Можете да комбинирате следните подходи: Excel генерира няколко реда за всеки елемент и .bat файлът ги създава. Или можете да оставите макроса да го направи, като премести всяка подпапка след създаването на основната. И в двата случая вие определяте структурата с подходящото обединяване.
Друга полезна идея: добавете префикси или суфикси към имената на папки от Excel, използвайки CONCAT или CONCATENATE (в зависимост от версията). Пример: =CONCAT("MD ";"""";"PRJ_";A3;"""") да има папки от тип PRJ_Name. Заместващите символи са неограничени: дата, числов код или каквото и да е, което вашият вътрешен контрол изисква.
Ако искате да предотвратите неуспеха на .bat файла, когато папката вече съществува, можете да подготвите редове с АКО НЕ СЪЩЕСТВУВА отпред. От Excel, нещо подобно: =CONCAT("IF NOT EXIST ";"""";A3;"""";" MD ";"""";A3;""""")По този начин се създават само тези, които не са налични.
И ако искате да усъвършенствате макроса, добавете малко проверка за грешки: Следващо автобиография около MkDir и проверете дали маршрутът съществува с Dir преди създаването. По този начин дублиращите се имена няма да спрат процеса.
Освен трите метода, ключът е да се овладее конкатенацията в Excel. С... CONCAT (или CONCATENATE) Създавате персонализирани команди: с кавички, с тирета, с префикси... и ако промените схемата утре, просто коригирате формулата и регенерирате вашия .bat.
Ако обичате да документирате, добавете няколко echo реда към вашия .bat файл, за да видите какво се създава на екрана. Не е задължително, но помага. проверете процеса когато работите със стотици записи и искате бързо проследяване.
С тези три подхода покривате типичните случаи: от тези, които се нуждаят само от плосък списък с папки, до тези, които изискват стандартизирани подпапки по елемент, включително тези, които предпочитат да щракнат върху бутон в Excel и да забравят за CMD и Notepad.
