Comment puis-je créer automatiquement une liste de dossiers nommés dans Windows?

13

Donc, j'étudie un cours en ligne qui a des centaines de sous-conférences. J'ai besoin de télécharger le code source de chaque conférence dans un sous-dossier correspondant. Avec plus de 120 conférences, la création d'un sous-dossier un par un est un processus minutieux.

Voici ma structure de dossiers actuelle:

entrez la description de l'image ici

Existe-t-il un moyen de créer tous ces sous-dossiers en même temps, avec le nom correct, via un fichier de commandes ou quelque chose de similaire.

Manish Giri
la source
@WesSayeed Je ne sais pas trop ce que tu veux dire. Cela ne supprimerait-il pas tous les dossiers? Je cherche à créer des dossiers de 9 à 122 (ou combien jamais le nombre de conférences qui y sont).
Manish Giri
Puisque vous mentionnez spécifiquement les fichiers batch et script, je ne posterai pas cela comme réponse, mais les vrais super utilisateurs savent qu'il est beaucoup plus facile d'obtenir simplement le bon outil pour le travail au lieu d'écrire le vôtre;). Utilisez simplement un outil de renommage et vous pourrez probablement le comprendre en moins d'une minute, y compris le téléchargement. J'ai personnellement utilisé Rename Master et Bulk Rename Utility (contient des publicités) et les deux peuvent gérer cela et bien d'autres opérations de fichiers et de dossiers ennuyeuses. (Je ne suis affilié à aucun de ces outils.)
Lilienthal
Utilisez un programme comme getright pour le téléchargement. Il a une version gratuite. Chaque fichier doit être téléchargé dans son emplacement d'origine.
JDługosz

Réponses:

29

Comment puis-je créer tous ces sous-dossiers à la fois, en utilisant mon schéma de nommage?

Si je devais créer les sous-dossiers dans un répertoire spécifique, tel que C: \ Dropbox \ Development, aurais-je besoin de cd dans ce répertoire en premier? En supposant que j'utilise le shell cmd?

Pour créer les sous-dossiers (sous-répertoires) dans un répertoire spécifique (qui n'est pas le répertoire actuel), vous pouvez effectuer l'une des opérations suivantes:

  • cd C:\Dropbox\Development premier ou
  • Modifiez la md Lec-%%icommande en md C:\Dropbox\Development\Lec-%%i.

Remarque:

  • mkdirest synonyme de mdet peut être utilisé à sa place.

Ci-dessous, je montre les deux alternatives, d'abord à partir d'un cmdshell (ligne de commande) et ensuite à l'aide d'un fichier batch.

En prime (bien que cela ne soit pas demandé dans la question d'origine), il existe également une bashalternative au shell.


Depuis un cmdshell:

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

ou

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

A partir d'un fichier batch:

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

Ou

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

Remarques:

  • 9est le numéro de départ. Changez si nécessaire.
  • 1est l'étape. Ne changez pas cela.
  • 120le numéro de fin. Modifiez si nécessaire le numéro du dernier répertoire dont vous avez besoin.
  • Pour créer des fichiers dans un autre répertoire, vous pouvez soit

    • cd C:\Dropbox\Development\Lec-%%i premier ou
    • changez la mdcommande en md C:\Dropbox\Development\Lec-%%i.

Existe-t-il un moyen de faire une chose similaire pour Mac OSX à partir du terminal Mac?

Depuis un bashshell:

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

Ou (pour une version plus portable)

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

Lectures complémentaires

DavidPostill
la source
Si je devais créer les sous-dossiers dans un répertoire spécifique, par exemple C:\Dropbox\Development, aurais-je besoin cdde ce répertoire en premier? En supposant que j'utilise le cmdshell? Et merci beaucoup!
Manish Giri
@Manish oui, vous devez d' cdabord accéder au dossier.
LPChip
Non. Changez simplement le md Lec-%%ienmd C:\Dropbox\Development\Lec-%%i
DavidPostill
Au lieu de mdpourquoi ne pas utiliser mkdirsous Windows? De cette façon, il est compatible avec * nix et une différence de moins pour les gens à retenir.
user541686
@Mehrdad J'ajouterai une note à cet effet.
DavidPostill
22

Il existe un autre moyen simple, pour un nombre limité de dossiers. Peut être utile ici ou pour quelqu'un d'autre.

Dans Windows, nous pouvons créer des noms de dossier numérotés en créant un dossier "lec (1)" et en copiant le coller combien de fois nous voulons, si nous collons 10 fois, il y aura 11 dossiers avec les noms "lect (1)" à "lec ( 10) - Copier "

La seule astuce ici est que le premier dossier doit inclure des parenthèses (n), où n est le numéro à partir duquel la numérotation commence.

Windows inclut "- copier" au et du nom du dossier collé "lec (1) - Copier" :(

Si vous ne l'aimez pas, il suffit de tout sélectionner et de renommer d'abord lec (1) -> lec- (1) ou quoi que ce soit.

Tous les noms de dossier seront ajustés et "- copie" sera supprimé;)

  • Ctrl + C - Copier
  • Ctrl + V - Coller
  • F2 - renommer
  • Entrez - pour terminer le changement de nom.
  • ESC- pour annuler le changement de nom.
  • Ctrl + A ou Ctrl + UP pour sélectionner des dossiers.

entrez la description de l'image ici

shahid
la source
2
+1 pour m'avoir appris quelque chose que je ne savais pas. :)
LPChip
L'animation (".gif") est plutôt agréable, mais la répéter encore et encore et encore et encore ... sans fin, est très ennuyeux.
Kevin Fegan
4
@KevinFegan Je ne suis pas d'accord. Les GIF en boucle garantissent que l'utilisateur (vous) peut réellement voir l'animation sans recharger la page et faire défiler rapidement pour essayer de la voir. La plupart des navigateurs n'offrent pas de boutons de contrôle GIF.
phyrfox
réponse impressionnante et arrêtez juste de regarder après avoir obtenu le point!
mothmonsterman
Cela ne fonctionnera pas si vous ne voulez pas de parenthèses dans le nom de votre dossier. Par exemple, je peux créer une liste de dossiers: x (0), x (1), x (2), ... x (N). Mais je ne peux PAS créer de liste: x0, x1, x2, ... xN
Gil Epshtain
2

Ce ne sera pas mieux qu'un script pour votre scénario particulier, mais c'est plutôt agréable de le savoir lorsque les noms de vos dossiers ne sont pas liés: vous pouvez créer plusieurs répertoires à partir de la ligne de commande en les séparant par un espace:

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
la source
3
C'est gentil de votre part de le souligner, mais cela ne répond pas à la question ...
DavidPostill
1
@DavidPostill. Je suis d'accord, c'est pourquoi je l'ai libellé comme je l'ai fait. Mais c'est BEAUCOUP mieux que de créer des dossiers 1 par 1. Peut-être devrais-je supprimer la réponse et en faire un commentaire?
TTT
1

Vous constaterez peut-être que si vous créez des dossiers numérotés nommés comme ceci, ils ne s'afficheront pas dans l'ordre de tri approprié (attendu):

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

Le problème est que la partie numérique des noms de dossiers est de largeur variable, ce qui affecte la façon dont les dossiers sont triés.

S'il est important pour vous que les dossiers soient triés correctement, utilisez le fichier de commandes ci-dessous pour créer des dossiers avec la partie numérotée des noms de dossiers remplie de "0" (zéro) afin que tous les numéros soient de la même longueur, comme ceci:

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

Voici le fichier batch:

@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
la source
1
La façon dont ils trient dépend de l'outil. L'Explorateur (et la plupart des autres gestionnaires de fichiers) les triera intuitivement, avec Lec-10suivi Lec-9.
afrazier
L'explorateur utilise le tri naturel, il 2sera donc mis avant 10comme prévu (si vous regardez la capture d'écran de l'OP, 9 est également trié avant 10). Ne dirsouffre que de ce problème et a besoin de 0rembourrages, mais l'OP ne connaissait pas grand-chose à la ligne de commande, donc je ne pense pas que ce sera un problème
phuclv
@phuclv - Oui, comme vous le dites, "OP ne connaissait pas grand-chose à la ligne de commande ...". C'est pourquoi j'ai écrit cette réponse. Faire savoir à OP à quoi s'attendre et apporter une solution (réponse). Je pourrais imaginer OP en utilisant la grande réponse de DavidPostill, puis devenir confus de voir la dirliste des dossiers en panne. Windows Comme vous et afrazier l'avez mentionné, l'Explorateur Windows triera / répertoriera les dossiers correctement, mais l'OP recherchait une batchsolution qui signifie qu'ils fonctionneront (très probablement) à partir du command prompt.
Kevin Fegan
0

Vous pouvez exécuter ce fichier de commandes dans le même dossier que les fichiers. Chaque fichier sera déplacé dans un dossier du même nom.

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

Je l'utilise avec un avertissement ci-dessous pour éviter une utilisation accidentelle.

@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
la source
-1

Tout d'abord, je n'ai pas lu tout votre problème ... mais pour autant que je puisse le comprendre ... vous voulez renommer les dossiers sur la base de la liste ... et bien il y a deux méthodes

Méthode 1 - Si vous n'avez pas de liste de dossiers ... il y a une solution ... vous devez aller sur macOS avec cette arborescence de dossiers ... et simplement copier l'arborescence de dossiers entière ... Ce que macOS fera, c'est qu'ils copient le contenu ainsi que la liste de tous vos dossiers en termes de liste aussi ... collez maintenant dans TextEdit ou tout logiciel similaire au Bloc-notes.

-Maintenant je suppose que vous avez cette liste de dossiers avec vous ... vous avez juste besoin d'un logiciel tiers pour faire le travail (maintenant toutes les étapes sont pour Windows) https://www.rename-expert.com -En termes Pour utiliser ce logiciel, vous deviez créer un nouveau dossier, un nouveau dossier-2, un nouveau dossier-4 autant que vous le vouliez.

-Maintenant, dans Rename Expert, il existe une option pour renommer les dossiers à partir de la base de la liste.

-Boom vous avez terminé.

Méthode 2 - Si vous souhaitez créer une copie miroir de votre arborescence de dossiers entière sans fichiers.

-Beyond Compare est le logiciel dont vous avez besoin. https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure

Utkarsh Patel
la source
Cela suppose à tort que l'utilisateur possède déjà l'arborescence complète des dossiers. Il existe de meilleures solutions qui ne nécessitent pas de logiciel supplémentaire et / ou inconnu.
jiggunjer