Jak mogę automatycznie utworzyć listę nazwanych folderów w systemie Windows?

13

Studiuję kurs online, który zawiera setki wykładów. Muszę pobrać kod źródłowy dla każdego wykładu w odpowiednim podfolderze. Z ponad 120 wykładów, tworzenie podfolderów jeden po drugim jest żmudnym procesem.

Oto moja obecna struktura folderów:

wprowadź opis zdjęcia tutaj

Czy istnieje sposób na utworzenie wszystkich tych podfolderów jednocześnie, wraz z odpowiednią nazwą, poprzez plik wsadowy lub coś podobnego.

Manish Giri
źródło
@WesSayeed Nie jestem pewien, co masz na myśli. Czy to nie usunie wszystkich folderów? Chcę utworzyć foldery od 9 do 122 (lub ile kiedykolwiek jest liczby wykładów).
Manish Giri
Ponieważ konkretnie wspominasz o plikach wsadowych i skryptach, nie opublikuję tego jako odpowiedzi, ale prawdziwi super użytkownicy wiedzą, że o wiele łatwiej jest po prostu znaleźć odpowiednie narzędzie do pracy niż pisać własne;). Wystarczy użyć narzędzia do zmiany nazwy i prawdopodobnie uda się to ustalić w mniej niż minutę, łącznie z pobraniem. Osobiście korzystałem z Rename Master i Bulk Rename Utility (zawiera reklamy) i oba mogą obsłużyć tę i wiele innych irytujących operacji na plikach i folderach. (Nie jestem związany z żadnym narzędziem.)
Lilienthal,
Do pobierania użyj programu takiego jak getright . Ma darmową wersję. Każdy plik należy pobrać do odpowiedniego domu.
JDługosz

Odpowiedzi:

29

Jak mogę utworzyć wszystkie te podfoldery jednocześnie, korzystając z mojego schematu nazewnictwa?

Gdybym miał utworzyć podfoldery w określonym katalogu, takim jak C: \ Dropbox \ Development, czy najpierw musiałbym wykonać cd do tego katalogu? Zakładając, że używam powłoki cmd?

Aby utworzyć podfoldery (podkatalogi) w określonym katalogu (który nie jest bieżącym katalogiem), możesz wykonać jedną z następujących czynności:

  • cd C:\Dropbox\Development pierwszy lub
  • Zmień md Lec-%%ipolecenie na md C:\Dropbox\Development\Lec-%%i.

Uwaga:

  • mkdirjest synonimem mdi może być używany zamiast niego.

Poniżej pokazuję obie alternatywy, pierwszą z cmdpowłoki (wiersz poleceń), a drugą za pomocą pliku wsadowego.

Jako bonus (choć nie jest to wymagane w pierwotnym pytaniu) istnieje również bashalternatywa dla powłoki.


Z cmdmuszli:

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

lub

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

Z pliku wsadowego:

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

Lub

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

Uwagi:

  • 9jest numerem początkowym. Zmień w razie potrzeby.
  • 1jest krok. Nie zmieniaj tego.
  • 120numer końcowy. W razie potrzeby zmień na numer ostatniego wymaganego katalogu.
  • Aby utworzyć pliki w innym katalogu, możesz albo

    • cd C:\Dropbox\Development\Lec-%%i pierwszy lub
    • zmień mdpolecenie na md C:\Dropbox\Development\Lec-%%i.

Czy istnieje sposób, aby zrobić podobną rzecz dla Mac OSX z terminala Mac?

Z bashmuszli:

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

Lub (dla bardziej przenośnej wersji)

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

Dalsza lektura

DavidPostill
źródło
Gdybym miał utworzyć podfoldery w określonym katalogu, np. C:\Dropbox\DevelopmentCzy najpierw musiałbym przejść cddo tego katalogu? Zakładając, że używam cmdpowłoki? I wielkie dzięki!
Manish Giri
@Manish tak, musisz najpierw przejść cddo folderu.
LPChip
Nie wystarczy zmienić md Lec-%%inamd C:\Dropbox\Development\Lec-%%i
DavidPostill
Zamiast mddlaczego nie używać mkdirw systemie Windows? W ten sposób jest to zgodne z * nix i jedną mniejszą różnicą dla ludzi do zapamiętania.
user541686,
@ Mehrdad dodam notatkę do tego efektu.
DavidPostill
22

Istnieje inny prosty sposób na ograniczenie liczby folderów. Może być przydatny tutaj lub dla kogoś innego.

W systemie Windows możemy tworzyć numerowane nazwy folderów, tworząc folder „lec (1)” i kopiując wklejając go ile czasu chcemy, jeśli wkleimy 10 razy, będzie 11 folderów o nazwach „lect (1)” na „lec ( 10) - Kopiuj ”

Jedyną sztuczką jest to, że pierwszy folder musi zawierać nawiasy (n), gdzie n jest liczbą, od której zaczyna się numeracja.

System Windows zawiera „- kopiuj” na i wklejoną nazwę folderu „lec (1) - Kopiuj” :(

Jeśli ci się nie podoba, po prostu wybierz wszystko i zmień nazwę najpierw lec (1) -> lec- (1) lub cokolwiek innego.

Wszystkie nazwy folderów zostaną dostosowane, a „- kopiowanie” zostanie usunięte;)

  • Ctrl + C - Kopiuj
  • Ctrl + V - Wklej
  • F2 - zmiana nazwy
  • Enter - aby zakończyć zmianę nazwy.
  • ESC - aby anulować zmianę nazwy.
  • Ctrl + A lub Ctrl + UP, aby wybrać foldery.

wprowadź opis zdjęcia tutaj

szahid
źródło
2
+1 za nauczenie mnie czegoś, czego nie wiedziałem. :)
LPChip
Animacja („.gif”) jest raczej miłym akcentem, ale powtarzanie jej w kółko w kółko… w nieskończoność jest bardzo denerwujące.
Kevin Fegan
4
@KevinFegan Nie zgadzam się. Zapętlone pliki GIF zapewniają, że użytkownik (ty) faktycznie zobaczy animację bez ponownego ładowania strony i szybkiego przewijania w dół, aby ją zobaczyć. Większość przeglądarek nie oferuje przycisków sterujących GIF.
phyrfox,
świetna odpowiedź i po prostu przestań oglądać, kiedy zdobędziesz punkt!
mothmonsterman,
To nie zadziała, jeśli nie chcesz nawiasu w nazwie folderu. Na przykład mogę utworzyć listę folderów: x (0), x (1), x (2), ... x (N). Ale NIE mogę utworzyć listy: x0, x1, x2, ... xN
Gil Epshtain
2

Nie będzie to lepsze niż skrypt dla konkretnego scenariusza, ale miło jest to wiedzieć, gdy nazwy folderów nie są ze sobą powiązane: możesz utworzyć wiele katalogów z wiersza poleceń, oddzielając je spacją:

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
TTT
źródło
3
Miło z twojej strony, że to podkreślasz, ale nie odpowiada na pytanie ...
DavidPostill
1
@DavidPostill. Zgadzam się, dlatego sformułowałem to tak, jak to zrobiłem. Ale to DUŻO lepsze niż tworzenie folderów 1 na 1. Być może powinienem usunąć odpowiedź i zamienić ją w komentarz?
TTT
1

Może się okazać, że jeśli utworzysz ponumerowane foldery o takiej nazwie, nie będą one wyświetlane w odpowiedniej (oczekiwanej) kolejności sortowania:

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

Problem polega na tym, że część liczbowa nazw folderów ma zmienną szerokość, co wpływa na sposób sortowania folderów.

Jeśli ważne jest, aby foldery były poprawnie posortowane, użyj poniższego pliku wsadowego, aby utworzyć foldery z numerowaną częścią nazw folderów wypełnionymi „0” (zero), aby wszystkie liczby były tej samej długości, jak poniżej:

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

Oto plik wsadowy:

@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
Kevin Fegan
źródło
1
Ich sortowanie zależy od narzędzia. Explorer (i większość innych menedżerów plików) posortuje je intuicyjnie, a Lec-10potem Lec-9.
afrazier
Eksplorator używa sortowania naturalnego, więc 2zostanie umieszczony wcześniej, 10jak można by się spodziewać (jeśli spojrzysz na zrzut ekranu 9 PO jest również sortowany przed 10). dirCierpi tylko na ten problem i potrzebuje 0podkładek, ale OP nie wiedział wiele o wierszu poleceń, więc nie sądzę, że będzie to problem
phuclv
@phuclv - Tak, jak mówisz, „OP nie wiedział wiele o linii poleceń ...”. Dlatego napisałem tę odpowiedź. Poinformowanie OP o tym, czego się spodziewać i przedstawienie rozwiązania (odpowiedź). Mogłem sobie wyobrazić OP wykorzystujący świetną odpowiedź DavidPostill, a potem pomyliłem się, widząc dirkatalogi w porządku. Windows Jak już wspomniałeś, Eksplorator Windows poprawnie posortuje / wyświetli foldery, ale OP szukał batchrozwiązania, co oznacza, że ​​będą (najprawdopodobniej) działały z command prompt.
Kevin Fegan
0

Możesz uruchomić ten plik wsadowy w tym samym folderze co pliki. Każdy plik zostanie przeniesiony do folderu o tej samej nazwie.

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

Używam go z poniższym ostrzeżeniem, aby uniknąć przypadkowego użycia.

@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
źródło
-1

Przede wszystkim nie przeczytałem całego problemu ... ale o ile mogę to rozgryźć ... chcesz zmienić nazwy folderów na podstawie listy ... cóż, są dwie metody

Metoda 1 - Jeśli nie masz listy folderów ... istnieje obejście ... musisz przejść do macOS z tym drzewem folderów ... i po prostu skopiować całe drzewo folderów ... MacOS zrobi to, że skopiuje zawartość a także listę wszystkich folderów pod względem listy, a także ... teraz wklej do TextEdit lub dowolnego oprogramowania podobnego do Notatnika.

- Teraz zakładam, że masz tę listę folderów z tobą ... potrzebujesz tylko oprogramowania innej firmy, aby wykonać zadanie (teraz wszystkie kroki dotyczą systemu Windows) https://www.rename-expert.com -Warunki korzystania z tego oprogramowania trzeba było utworzyć nowy folder, nowy folder-2, nowy folder-4 tyle, ile chcesz.

- Teraz w Rename Expert dostępna jest opcja zmiany nazw folderów na podstawie listy.

-Boom jesteś skończony.

Metoda 2 - Jeśli chcesz utworzyć kopię lustrzaną całego drzewa folderów bez plików.

-Beyond Compare to oprogramowanie, którego potrzebujesz. https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure

Utkarsh Patel
źródło
Niepoprawnie zakłada to, że użytkownik ma już pełne drzewo folderów. Istnieją lepsze rozwiązania, które nie wymagają dodatkowego i / lub nieznanego oprogramowania.
jiggunjer