¿Cómo crear por lotes un rango de carpetas (000-999) en Windows?

16

Necesito crear 1000 carpetas numeradas de 000 a 999 dentro de un directorio. ¿Cómo puedo hacer esto usando cmd(es decir, la línea de comandos de Windows)?

usuario11955
fuente
Son problemas como estos por lo que generalmente apunto a las personas hacia Python. La línea de comandos de Windows está lejos de ser poderosa, en mi opinión, necesita algo para complementarla.
Phoshi
1
Sólo hay que hacerlo una vez, no quiero instalar Python sólo por eso ...
user11955
1
No, mantendrás a Python por otras cosas;)
Ignacio Vázquez-Abrams

Respuestas:

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

Explicación de la documentación (es decir, escriba for /?en el símbolo del sistema):

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)
Codismo
fuente
1
¿Es esta una lengua extranjera de algún tipo? Lo que sea, ¡funciona muy bien! ¡Gracias!
user11955
¡Increíble! Solo lo intenté. ¿Te importaría explicar la sintaxis o dar un enlace a una explicación?
Christopher Bottoms
1
@ChristopherBottoms: Espero que ya hayas resuelto la sintaxis. pero en caso de que aún lo necesite, vaya a la ventana de cmd y escriba /?
Codismo
respuesta fenomenal!
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
fuente
Funciona como un archivo .bat
NeoMati
No funciona. El OP quiere nombres con 0prefijo (000-999), y quiere números solo sin prefijo. Su código produce números sin prefijo 0, y también agregó un prefijo extraño. Por ejemplo, si el nombre del lugar es abcentonces creas abc"__"0, abc"__"1... abc"__"10...abc"__"999
phuclv