Comment créer par lots une gamme de dossiers (000-999) dans Windows?

16

J'ai besoin de créer 1000 dossiers numérotés de 000 à 999 dans un répertoire. Comment puis-je faire cela en utilisant cmd(c'est-à-dire la ligne de commande Windows)?

user11955
la source
Ce sont des problèmes comme ceux-ci pour lesquels je dirige habituellement les gens vers python. La ligne de commande de Windows est loin d'être puissante, l'OMI a besoin de quelque chose pour la compléter.
Phoshi
1
J'ai juste besoin de le faire une fois, je ne veux pas installer python juste pour ça ...
user11955
1
Non, vous garderez le Python pour d'autres choses;)
Ignacio Vazquez-Abrams

Réponses:

28
for /l %i in (0,1,9) do md 00%i
for /l %i in (10,1,99) do md 0%i
for /l %i in (100,1,999) do md %i

Explication de la documentation (c.- for /?à- d. Tapez à l'invite de commande):

Runs a specified command for each file in a set of files.

FOR %variable IN (set) DO command [command-parameters]

  %variable  Specifies a single letter replaceable parameter.
  (set)      Specifies a set of one or more files.  Wildcards may be used.
  command    Specifies the command to carry out for each file.
  command-parameters
             Specifies parameters or switches for the specified command.

...

FOR /L %variable IN (start,step,end) DO command [command-parameters]

    The set is a sequence of numbers from start to end, by step amount.
    So (1,1,5) would generate the sequence 1 2 3 4 5 and (5,-1,1) would
    generate the sequence (5 4 3 2 1)
Codisme
la source
1
Est-ce une sorte de langue étrangère? Quoi qu'il en soit, cela fonctionne très bien! Merci!
user11955
Impressionnant! Je viens de l'essayer. Pourriez-vous expliquer la syntaxe ou donner un lien vers une explication?
Christopher Bottoms
1
@ChristopherBottoms: J'espère que vous avez déjà compris la syntaxe. mais au cas où vous en auriez encore besoin, allez dans la fenêtre cmd et tapez /?
Codisme
réponse phénoménale!
Brainmaniac
-1
@ECHO OFF && CLS

SET /P x=Insert the name of the place: 
SET /P y=Insert de number of the records: 

SET /A start=1
SET /A z=y+1

REM start the loop
:MKDIR

REM make the directory
MKDIR %x%"__"%start%

REM increment by 1
SET /A start=start+1

REM if we're at the end, return
IF %start%==%z% (GOTO :EOF) ELSE (GOTO :MKDIR)
NeoMati
la source
Il fonctionne comme un fichier .bat
NeoMati
ça ne marche pas. L'OP veut des noms avec 0préfixe (000-999), et il veut seulement des nombres sans aucun préfixe. Votre code produit des nombres sans préfixe 0 et vous avez également ajouté un préfixe étrange. Par exemple si le nom du lieu est abcalors vous créez abc"__"0, abc"__"1... abc"__"10...abc"__"999
phuclv