Як я можу автоматично створити список названих папок у Windows?


13

Отже, я вивчаю онлайн-курс, в якому є сотні поданих лекцій. Мені потрібно завантажити вихідний код для кожної лекції у відповідну підпапку. Маючи понад 120 лекцій, створення підпапок одна за одною є кропітким процесом.

Ось моя поточна структура папок:

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

Чи є спосіб я створити всі ці підпапки відразу разом із власним іменем через пакетний файл чи щось подібне.


@WesSayeed Я не впевнений, що ти маєш на увазі. Хіба це не просто видалить усі папки? Я хочу створити папки від 9 аж до 122 (або скільки коли-небудь кількість лекцій, які там є).
Manish Giri

Оскільки ви конкретно згадуєте пакетні та скриптні файли, я не публікую це як відповідь, але справжні супер користувачі знають, що набагато простіше просто знайти потрібний інструмент для роботи, а не писати власний;). Просто скористайтеся інструментом перейменування, і ви, ймовірно, зможете розібратися в цьому за менше хвилини, включаючи завантаження. Я особисто використовував утиліту 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;

Подальше читання

  • Індекс AZ командного рядка Windows CMD - відмінна довідка для всіх речей, що стосуються cmd-рядка Windows.
  • for - Умовно виконайте команду кілька разів.
  • md - Створити каталог - Створює нову папку.

Якби я створив підпапки в певному каталозі, наприклад C:\Dropbox\Development, чи потрібно мені спочатку cdдо цього каталогу? Якщо припустити, що я використовую cmdоболонку? І велике спасибі!
Manish Giri

@Manish так, вам потрібно спочатку cdперейти в папку.
LPChip

Ні. Просто змініть md Lec-%%iнаmd C:\Dropbox\Development\Lec-%%i
DavidPostill

Замість того, mdчому б не використовувати mkdirв Windows? Таким чином, це відповідає * nix та одній меншій різниці, щоб люди пам'ятали.
користувач541686

@Mehrdad Я додам до цього записку.
DavidPostill

22

Існує ще один простий спосіб для обмеженої кількості папок. Може бути корисним тут або для когось іншого.

У Windows ми можемо зробити нумеровані імена папок, створивши папку "lec (1)" та скопіювавши її, вставивши скільки разів ми хочемо, якщо ми вставимо 10 разів, буде 11 папок з іменами "lect (1)" до "lec ( 10) - Копія "

Єдина хитрість тут полягає в тому, що перша папка повинна містити круглі дужки (n), де n - це номер, з якого починається нумерація.

Windows включає "- копіювати" в і вклеєне ім'я папки "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.
фірфокс

приголомшлива відповідь і просто перестаньте дивитися після того, як ви отримаєте бал!
mothmonsterman

Це не спрацює, якщо ви не хочете дужки в імені вашої папки. Наприклад, я можу створити список папок: x (0), x (1), x (2), ... x (N). Але я НЕ можу створити список: x0, x1, x2, ... xN
Gil Epshtain

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
...

Проблема полягає в тому, що частина номерів імен папок має змінну ширину, що впливає на сортування папок.

Якщо вам важливо правильно сортувати папки, використовуйте пакетний файл нижче, щоб створити папки з пронумерованою частиною імен папок, зафіксованих "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
Те, як вони сортуються, залежить від інструменту. Провідник (і більшість інших файлових менеджерів) сортуватимуть їх інтуїтивно, з Lec-10наступним Lec-9.
afrazier

Провідник використовує природний сорт, тому 2він буде поставлений раніше, 10як можна було очікувати (якщо ви подивитесь на знімок екрана ОП 9, також відсортований до 10). Тільки dirстраждає від цієї проблеми і потребує 0прокладок, але ОП не знав багато про командний рядок, тому я не думаю, що це буде проблемою
phuclv

@phuclv - Так, як ви кажете, "OP не знав багато про командний рядок ...". Ось чому я написав цю відповідь. Повідомляти ОП, чого очікувати, і запропонувати рішення (відповідь). Я міг уявити, що ОП використовує чудову відповідь DavidPostill, а потім заплутатися, побачивши, як 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"
)
)

-1

Перш за все, я не читав всю вашу проблему ... але наскільки я можу це зрозуміти ... ви хочете перейменувати папки на основі списку ... ну є два способи

Спосіб-1. Якщо у вас немає списку папок ... є вирішення проблеми ... вам потрібно перейти до macOS за допомогою цього дерева папок ... і просто скопіювати все дерево папок ... Що робитиме macOS - це копіювати вміст а також список усіх ваших папок з точки зору списку ... тепер вставте TextEdit або будь-яке програмне забезпечення, схоже на Блокнот.

-Зараз я припускаю, що у вас є список списку папок ... для виконання цієї роботи вам потрібне лише програмне забезпечення сторонніх розробників (зараз усі кроки призначені для Windows) https://www.rename-expert.com -Умови Щоб скористатися цим програмним забезпеченням, вам довелося створити нову папку, нову папку-2, нову папку-4 стільки, скільки ви хотіли.

-Зараз у Перейменуванні експерта існує можливість перейменування папок із основи списку.

-Бум, ти закінчив.

Спосіб-2. Якщо ви хочете створити дзеркальну копію всього дерева папок без файлів у ньому.

-Beyond Compare - це програмне забезпечення, яке вам потрібно. https://www.scootersoftware.com/support.php?zz=kb_copyfolderструктура


Це неправильно передбачає, що користувач вже має повне дерево папок. Є кращі рішення, які не потребують додаткового та / або невідомого програмного забезпечення.
jiggunjer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.