Wie kann ich in Windows automatisch eine Liste benannter Ordner erstellen?

13

Also studiere ich einen Online-Kurs, der Hunderte von Untervorträgen enthält. Ich muss den Quellcode für jede Vorlesung in einen entsprechenden Unterordner herunterladen. Mit über 120 Vorträgen ist es ein mühsamer Prozess, einen Unterordner nach dem anderen zu erstellen.

Hier ist meine aktuelle Ordnerstruktur:

Bildbeschreibung hier eingeben

Gibt es eine Möglichkeit, alle diese Unterordner zusammen mit dem richtigen Namen über eine Batch-Datei oder Ähnliches auf einmal zu erstellen?

Manish Giri
quelle
@WesSayeed Ich bin mir nicht sicher, was du meinst. Würde das nicht einfach alle Ordner löschen? Ich möchte Ordner von 9 bis 122 erstellen (oder wie viele Vorträge es gibt).
Manish Giri
Da Sie speziell Batch- und Skriptdateien erwähnen, werde ich dies nicht als Antwort posten, aber echte Superuser wissen, dass es viel einfacher ist, nur das richtige Tool für den Job zu finden, als Ihr eigenes zu schreiben;). Verwenden Sie einfach ein Umbenennungs-Tool und Sie können dies wahrscheinlich in weniger als einer Minute herausfinden, einschließlich des Downloads. Ich habe persönlich Rename Master und Bulk Rename Utility (enthält Anzeigen) verwendet und beide können diese und viele andere lästige Datei- und Ordneroperationen ausführen. (Ich bin mit keinem Tool verbunden.)
Lilienthal
Verwenden Sie zum Herunterladen ein Programm wie getright . Es hat eine kostenlose Version. Jede Datei sollte zu ihrem richtigen Zuhause heruntergeladen werden.
JDługosz

Antworten:

29

Wie kann ich mit meinem Namensschema alle diese Unterordner gleichzeitig erstellen?

Wenn ich die Unterordner in einem bestimmten Verzeichnis wie C: \ Dropbox \ Development erstellen würde, müsste ich zuerst in dieses Verzeichnis wechseln? Angenommen, ich verwende die Cmd-Shell?

Um die Unterordner (Unterverzeichnisse) in einem bestimmten Verzeichnis (das nicht das aktuelle Verzeichnis ist) zu erstellen, haben Sie folgende Möglichkeiten:

  • cd C:\Dropbox\Development zuerst oder
  • Ändern Sie den md Lec-%%iBefehl in md C:\Dropbox\Development\Lec-%%i.

Hinweis:

  • mkdirist ein Synonym für mdund kann an seiner Stelle verwendet werden.

Unten zeige ich beide Alternativen, erstens über eine cmdShell (Befehlszeile) und zweitens über eine Batch-Datei.

Als Bonus gibt es (obwohl in der ursprünglichen Frage nicht gewünscht) auch eine bashShell-Alternative.


Aus einer cmdMuschel:

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

oder

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

Aus einer Batch-Datei:

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

Oder

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

Anmerkungen:

  • 9ist die Startnummer. Bei Bedarf ändern.
  • 1ist der Schritt. Ändern Sie dies nicht.
  • 120die Endnummer. Ändern Sie gegebenenfalls die Nummer des letzten gewünschten Verzeichnisses.
  • Sie können entweder Dateien in einem anderen Verzeichnis erstellen

    • cd C:\Dropbox\Development\Lec-%%i zuerst oder
    • Ändern Sie den mdBefehl in md C:\Dropbox\Development\Lec-%%i.

Gibt es eine Möglichkeit, mit dem Mac-Terminal eine ähnliche Aktion für Mac OS X durchzuführen?

Aus einer bashMuschel:

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

Oder (für eine tragbarere Version)

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

Weitere Lektüre

DavidPostill
quelle
Wenn ich die Unterordner in einem bestimmten Verzeichnis erstellen C:\Dropbox\Developmentwürde, würde ich beispielsweise zuerst cdin dieses Verzeichnis wechseln müssen? Angenommen, ich benutze die cmdShell? Und vielen Dank!
Manish Giri
@Manish ja, du müsstest cdzuerst in den Ordner.
LPChip
Nein, ändern Sie einfach die md Lec-%%imd C:\Dropbox\Development\Lec-%%i
Einstellung
Anstatt mdwarum nicht mkdirunter Windows? Auf diese Weise steht es im Einklang mit * nix und einem Unterschied weniger, an den sich die Leute erinnern müssen.
user541686
@Mehrdad Ich werde eine Notiz zu diesem Effekt hinzufügen.
DavidPostill
22

Für eine begrenzte Anzahl von Ordnern gibt es einen anderen einfachen Weg. Kann hier nützlich sein oder für jemand anderen.

Unter Windows können wir nummerierte Ordnernamen erstellen, indem wir einen Ordner "lec (1)" erstellen und ihn so oft kopieren, wie wir möchten. Wenn wir 10 Mal einfügen, werden 11 Ordner mit den Namen "lect (1)" bis "lec ( 10) - Kopieren

Der einzige Trick dabei ist, dass der erste Ordner Klammern (n) enthalten muss, wobei n die Nummer ist, ab der die Nummerierung beginnt.

Windows enthält "- copy" am und des eingefügten Ordnernamens "lec (1) - Copy" :(

Wenn es dir nicht gefällt, wähle einfach alle aus und benenne zuerst lec (1) -> lec- (1) oder irgendetwas um.

Alle Ordnernamen werden angepasst und "- copy" wird entfernt;)

  • Strg + C - Kopieren
  • Strg + V - Einfügen
  • F2 - umbenennen
  • Eingabetaste - um die Umbenennung abzuschließen.
  • ESC-, um das Umbenennen abzubrechen.
  • Strg + A oder Strg + AUF, um Ordner auszuwählen.

Bildbeschreibung hier eingeben

Shahid
quelle
2
+1 für das Unterrichten von etwas, das ich nicht wusste. :)
LPChip
Die Animation (".gif") ist eher eine nette Geste, aber es immer und immer wieder zu wiederholen ... endlos, ist sehr ärgerlich.
Kevin Fegan
4
@ KevinFegan Ich bin anderer Meinung. Looped GIFs stellen sicher, dass der Benutzer (Sie) die Animation tatsächlich sieht, ohne die Seite neu zu laden und schnell nach unten zu scrollen, um sie zu sehen. Die meisten Browser bieten keine GIF-Steuerungsschaltflächen.
Phyrfox
tolle antwort und hör einfach auf zuzuschauen, wenn du verstanden hast!
happytime harry
Dies funktioniert nicht, wenn der Ordnername keine Klammern enthalten soll. Zum Beispiel kann ich eine Liste von Ordnern erstellen: x (0), x (1), x (2), ... x (N). Aber ich kann keine Liste erstellen: x0, x1, x2, ... xN
Gil Epshtain
2

Dies ist nicht besser als ein Skript für Ihr spezielles Szenario, aber es ist schön zu wissen, wenn Ihre Ordnernamen keine Beziehung zueinander haben: Sie können mehrere Verzeichnisse von der Befehlszeile aus erstellen, indem Sie sie durch ein Leerzeichen trennen:

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
quelle
3
Es ist nett von Ihnen, darauf hinzuweisen, aber es beantwortet nicht die Frage ...
DavidPostill
1
@ DavidPostill. Ich stimme zu, weshalb ich es so formuliert habe, wie ich es getan habe. Aber es ist VIEL besser als Ordner 1 mal 1 zu erstellen. Vielleicht sollte ich die Antwort löschen und einen Kommentar machen?
TTT
1

Wenn Sie nummerierte Ordner mit dem folgenden Namen erstellen, werden diese möglicherweise nicht in der richtigen (erwarteten) Sortierreihenfolge angezeigt:

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

Das Problem ist, dass der Nummernteil der Ordnernamen eine variable Breite hat, was sich auf die Sortierung der Ordner auswirkt.

Wenn es für Sie wichtig ist, dass die Ordner richtig sortiert sind, erstellen Sie mithilfe der folgenden Batchdatei Ordner mit dem nummerierten Teil der Ordnernamen, die mit "0" (Nullen) aufgefüllt sind, sodass alle Zahlen dieselbe Länge haben:

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

Hier ist die Batch-Datei:

@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
quelle
1
Wie sie sortiert werden, hängt vom jeweiligen Werkzeug ab. Der Explorer (und die meisten anderen Dateimanager) sortieren sie intuitiv und Lec-10kommen danach Lec-9.
afrazier
Der Explorer verwendet die natürliche Sortierung und 2wird daher 10wie erwartet vorgesetzt (wenn Sie sich das OP ansehen, wird Screenshot 9 auch vor 10 sortiert). Leidet nur diran diesem Problem und benötigt 0Auffüllungen, aber das OP wusste nicht viel über die Befehlszeile, so dass ich nicht denke, dass es ein Problem sein wird
phuclv
@phuclv - Ja, wie Sie sagen, "OP wusste nicht viel über die Befehlszeile ...". Deshalb habe ich diese Antwort geschrieben. OP wissen zu lassen, was zu erwarten ist und eine Lösung zu finden (Antwort). Ich könnte mir vorstellen, dass OP die großartige Antwort von DavidPostill verwendet, um dann verwirrt zu werden, wenn man sieht, dass dirdie Ordner nicht in Ordnung sind. Windows Wie Sie und afrazier bereits erwähnt haben, sortiert / listet Windows Explorer die Ordner korrekt auf, aber das OP suchte nach einer batchLösung, was bedeutet, dass sie (höchstwahrscheinlich) von der aus funktionieren command prompt.
Kevin Fegan
0

Sie können diese Batchdatei im selben Ordner wie die Dateien ausführen. Jede Datei wird in einen Ordner mit demselben Namen verschoben.

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

Ich verwende es mit einer Warnung unten, um eine versehentliche Verwendung zu vermeiden.

@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
quelle
-1

Zuallererst habe ich Ihr gesamtes Problem nicht gelesen ... aber soweit ich es herausfinden kann ... möchten Sie Ordner anhand der Liste umbenennen ... nun, es gibt zwei Methoden

Methode 1 - Wenn Sie keine Ordnerliste haben, gibt es eine Problemumgehung. Sie müssen mit diesem Ordnerbaum zu macOS gehen und einfach den gesamten Ordnerbaum kopieren sowie eine Liste aller Ordner in Bezug auf die Liste sowie ... Fügen Sie nun TextEdit oder eine ähnliche Software wie Notepad ein.

-Jetzt gehe ich davon aus, dass Sie diese Ordnerliste bei sich haben ... Sie benötigen nur eine Software von Drittanbietern, um die Aufgabe zu erledigen (Jetzt sind alle Schritte für Windows) https://www.rename-expert.com -In terms Um diese Software nutzen zu können, mussten Sie einen neuen Ordner, einen neuen Ordner-2, einen neuen Ordner-4 erstellen, so oft Sie wollten.

-Jetzt in Rename Expert gibt es eine Option zum Umbenennen von Ordnern von der Basis der Liste.

-Boom du bist fertig.

Methode 2 - Wenn Sie eine Spiegelkopie Ihres gesamten Ordnerbaums ohne darin enthaltene Dateien erstellen möchten.

-Beyond Compare ist die Software, die Sie brauchen. https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure

Utkarsh Patel
quelle
Dies setzt fälschlicherweise voraus, dass der Benutzer bereits über den vollständigen Ordnerbaum verfügt. Es gibt bessere Lösungen, die keine zusätzliche und / oder unbekannte Software erfordern.
Jiggunjer