Как я могу автоматически создать список именованных папок в Windows?

13

Итак, я изучаю онлайн-курс, который состоит из сотен лекций. Мне нужно скачать исходный код для каждой лекции в соответствующей подпапке. С более чем 120 лекциями создание подпапки одна за другой является кропотливым процессом.

Вот моя текущая структура папок:

введите описание изображения здесь

Есть ли способ, которым я могу создать все эти подпапки сразу, вместе с правильным именем, через командный файл или что-то подобное.

Маниш Гири
источник
@WesSayeed Я не уверен, что ты имеешь в виду. Разве это не удалит все папки? Я ищу для создания папок от 9 до 122 (или сколько там лекций).
Маниш Гири
Поскольку вы специально упоминаете командные файлы и файлы сценариев, я не буду публиковать это как ответ, но настоящие суперпользователи знают, что гораздо проще просто найти подходящий инструмент для работы, чем писать свой собственный;). Просто используйте инструмент переименования, и вы, вероятно, сможете понять это менее чем за минуту, включая загрузку. Я лично использовал Rename Master и Bulk Rename Utility (содержит рекламу), и оба могут справиться с этим и многими другими раздражающими операциями с файлами и папками. (Я не связан ни с одним из инструментов.)
Lilienthal
Используйте программу типа getright для загрузки. У него есть бесплатная версия. Каждый файл должен быть загружен в соответствующий дом.
JDługosz

Ответы:

29

Как я могу создать все эти подпапки одновременно, используя мою схему именования?

Если бы я создал подпапки в определенном каталоге, таком как C: \ Dropbox \ Development, мне сначала нужно было бы перейти в этот каталог? Предполагая, что я использую оболочку cmd?

Чтобы создать подпапки (подкаталоги) в определенном каталоге (который не является текущим каталогом), вы можете выполнить одно из следующих действий:

  • cd C:\Dropbox\Development первый или
  • Измените md Lec-%%iкоманду на md C:\Dropbox\Development\Lec-%%i.

Замечания:

  • mkdirявляется синонимом mdи может использоваться вместо него.

Ниже я показываю обе альтернативы, сначала из cmdоболочки (командной строки), а затем с использованием командного файла.

В качестве бонуса (хотя в первоначальном вопросе его не просили) также есть bashальтернатива оболочке.


Из cmdскорлупы:

cd C:\Dropbox\Development
for /l %i in (9,1,120) do md Lec-%i

или

for /l %i in (9,1,120) do md C:\Dropbox\Development\Lec-%i

Из пакетного файла:

@echo off
cd C:\Dropbox\Development
for /l %%i in (9,1,120) do md Lec-%%i

Или

@echo off
for /l %%i in (9,1,120) do md C:\Dropbox\Development\Lec-%%i

Примечания:

  • 9это начальный номер. Поменяйте при необходимости.
  • 1это шаг. Не меняй это.
  • 120конечный номер. При необходимости измените номер последнего каталога, который вам требуется.
  • Чтобы создать файлы в другом каталоге, вы можете

    • cd C:\Dropbox\Development\Lec-%%i первый или
    • измените mdкоманду на md C:\Dropbox\Development\Lec-%%i.

Есть ли способ сделать подобное для Mac OSX из терминала Mac?

Из bashскорлупы:

for i in {9..120}; do mkdir Lec-$i; done; 

Или (для более портативной версии)

for i in `seq 9 120`; do mkdir Lec-$i; done;

Дальнейшее чтение

ДэвидПостилл
источник
Если бы мне нужно было создавать подпапки в определенном каталоге, например C:\Dropbox\Development, нужно ли мне cdсначала обращаться к этому каталогу? Предполагая, что я использую cmdоболочку? И большое спасибо!
Маниш Гири
@ Да, сначала тебе нужно cdв папку.
LPChip
Нет , просто изменить md Lec-%%iнаmd C:\Dropbox\Development\Lec-%%i
DavidPostill
А mdпочему бы не использовать mkdirна Windows? Таким образом, это согласуется с * nix, и людям нужно помнить на одну разницу меньше.
user541686
@ Mehrdad Я добавлю заметку на этот счет.
DavidPostill
22

Есть еще один простой способ, для ограниченного количества папок. Может быть полезно здесь или для кого-то еще.

В Windows мы можем создать нумерованные имена папок, создав папку «lec (1)» и скопировав ее столько раз, сколько мы хотим, если мы вставим 10 раз, будет 11 папок с именами «lect (1)» в «lec ( 10) - Копировать

Единственная хитрость в том, что первая папка должна содержать круглые скобки (n), где n - номер, с которого начинается нумерация.

Windows включает в себя «- copy» и имя вставленной папки «lec (1) - Copy» :(

Если вам это не нравится, просто выберите все и переименуйте сначала lec (1) -> lec- (1) или что-нибудь еще.

Все имена папок будут скорректированы и "- копия" будет удалена;)

  • Ctrl + C - Копировать
  • Ctrl + V - Вставить
  • F2 - переименовать
  • Enter - завершить переименование.
  • ESC- отменить переименование.
  • Ctrl + A или Ctrl + UP, чтобы выбрать папки.

введите описание изображения здесь

шахид
источник
2
+1 за то, что научил меня чему-то, чего я не знал. :)
LPChip
Анимация (".gif") довольно приятное прикосновение, но повторять его снова и снова, снова и снова ... бесконечно, очень раздражает.
Кевин Феган
4
@KevinFegan Я не согласен. Зацикленные GIF-файлы гарантируют, что пользователь (вы) действительно сможет увидеть анимацию, не перезагружая страницу и быстро прокручивая ее вниз, чтобы попытаться ее увидеть. Большинство браузеров не предлагают кнопки управления GIF.
phyrfox
офигенный ответ и просто прекрати смотреть после того, как получишь точку!
Mothmonsterman
Это не будет работать, если вы не хотите, чтобы в названии папки были скобки. Например, я могу создать список папок: x (0), x (1), x (2), ... x (N). Но я не могу создать список: x0, x1, x2, ... xN
Гил Эпштейн
2

Это не будет лучше, чем сценарий для вашего конкретного сценария, но приятно знать это, когда имена ваших папок не связаны: вы можете создать несколько каталогов из командной строки, разделив их пробелом:

C:\temp\animals>dir
 Volume in drive C is Windows
 Volume Serial Number is 82CB-BB0F

 Directory of C:\temp\animals

11/16/2015  03:55 PM    <DIR>          .
11/16/2015  03:55 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  1,636,846,243,840 bytes free

C:\temp\animals>mkdir cats dogs penguins

C:\temp\animals>dir
 Volume in drive C is Windows
 Volume Serial Number is 82CB-BB0F

 Directory of C:\temp\animals

11/16/2015  03:55 PM    <DIR>          .
11/16/2015  03:55 PM    <DIR>          ..
11/16/2015  03:55 PM    <DIR>          cats
11/16/2015  03:55 PM    <DIR>          dogs
11/16/2015  03:55 PM    <DIR>          penguins
               0 File(s)              0 bytes
               5 Dir(s)  1,636,846,178,304 bytes free
ТТТ
источник
3
Это мило с вашей стороны указать на это, но это не отвечает на вопрос ...
DavidPostill
1
@DavidPostill. Я согласен, поэтому я сформулировал это так, как сделал. Но это НАМНОГО лучше, чем создавать папки 1 на 1. Возможно, мне следует удалить ответ и сделать его комментарием?
TTT
1

Вы можете обнаружить, что если вы создадите пронумерованные папки с такими именами, они не будут отображаться в правильном (ожидаемом) порядке сортировки:

C:\Dropbox\Development> dir /b
Lec-10
Lec-100
Lec-101
Lec-102
Lec-103
Lec-104
Lec-105
Lec-106
Lec-107
Lec-108
Lec-109
Lec-11
Lec-110
Lec-111
Lec-112
Lec-113
Lec-114
Lec-115
Lec-116
Lec-117
Lec-118
Lec-119
Lec-12
Lec-120
Lec-13
Lec-14
Lec-15
Lec-16
Lec-17
Lec-18
Lec-19
Lec-20
Lec-21
...
Lec-89
Lec-9
Lec-90
Lec-91
...

Проблема в том, что числовая часть foldernames имеет переменную ширину, что влияет на порядок сортировки папок.

Если для вас важно, чтобы папки сортировались правильно, используйте пакетный файл ниже, чтобы создать папки с пронумерованной частью foldernames, дополненной нулями (0), чтобы все числа имели одинаковую длину, например так:

C:\Dropbox\Development> dir /b
Lec-009
Lec-010
Lec-011
Lec-012
Lec-013
Lec-014
Lec-015
Lec-016
Lec-017
Lec-018
Lec-019
Lec-020
Lec-021
...

Вот командный файл:

@echo off

for /L %%f in (9,1,120) do call :work 000%%f
goto :EOF


:work

set "dx=%~1"
set "dx=%dx:~-3%"

md "C:\Dropbox\Development\Lec-%dx%" >nul 2>&1

set "dx="
goto :EOF
Кевин Феган
источник
1
Как они сортируют, зависит от инструмента. Explorer (и большинство других файловых менеджеров) будет сортировать их интуитивно, с Lec-10последующим Lec-9.
afrazier
Проводник использует естественную сортировку, поэтому 2он будет помещен раньше, 10чем ожидалось (если вы посмотрите на скриншот ОП, 9 также отсортированы до 10). Только dirстрадает от этой проблемы и нуждается в 0дополнениях, но ОП мало знал о командной строке, поэтому я не думаю, что это будет проблемой
phuclv
@phuclv - Да, как вы говорите, «OP мало знал о командной строке ...». Вот почему я написал этот ответ. Дать ОП знать, чего ожидать и предоставить решение (ответ). Я мог бы представить себе OP, используя отличный ответ Дэвида Постилла, а затем запутаться, увидев dirсписок папок не по порядку. Windows Как вы и автор заметили , проводник Windows будет правильно сортировать / перечислять папки, но ОП ищет batchрешение, которое означает, что они (скорее всего) будут работать из command prompt.
Кевин Феган
0

Вы можете запустить этот пакетный файл в той же папке, что и файлы. Каждый файл будет перемещен в папку с тем же именем.

for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)

Я использую это с предупреждением ниже, чтобы избежать случайного использования.

@echo off
echo.
set sure=
set /p sure=you want to put each file in this folder into their own folders? 
if /i "%sure%"=="" exit
if /i "%sure:~0,1%"=="n" exit
if /i not "%sure:~0,1%"=="y" (exit) else (echo.&echo are you sure? Close window to cancel or..)
echo.&pause 
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)
Terence
источник
-1

Прежде всего, я не прочитал всю вашу проблему ... но насколько я могу понять ... вы хотите переименовать папки на основе списка ... ну, есть два метода

Способ-1 -Если у вас нет списка папок ... есть обходной путь ... вам нужно перейти к macOS с этим деревом папок ... и просто скопировать все дерево папок ... Что MacOS сделает, так это скопирует содержимое а также список всех ваших папок с точки зрения списка, а также ... теперь вставьте в TextEdit или любое программное обеспечение, подобное Notepad.

-Теперь я предполагаю , вас имея , что список папок с вами ... вам просто нужно одно программное обеспечение сторонних производителей, чтобы сделать работу (сейчас все шаги для Windows) https://www.rename-expert.com -Для термины Чтобы использовать это программное обеспечение, вы должны были создать новую папку, новую папку-2, новую папку-4 столько, сколько вы хотели.

-Теперь в эксперте по переименованию есть опция для переименования папок на основе списка.

-Бум, вы сделали.

Метод-2 -Если вы хотите создать зеркальную копию всего дерева папок без файлов в нем.

-Beyond Compare - это программа, которая вам нужна. https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure

Уткарш Патель
источник
Это неправильно предполагает, что у пользователя уже есть полное дерево папок. Есть лучшие решения, которые не требуют дополнительного и / или неизвестного программного обеспечения.
jiggunjer