Como criar em lote um intervalo de pastas (000-999) no Windows?

16

Eu preciso criar 1000 pastas numeradas 000 a 999 dentro de um diretório. Como posso fazer isso usando cmd(ou seja, a linha de comando do Windows)?

user11955
fonte
É problemas como esses que eu normalmente aponto para as pessoas em python. A linha de comando do Windows está longe de ser poderosa, o IMO precisa de algo para complementá-lo.
Phoshi 19/10/10
1
Eu só preciso fazer isso uma vez, não quero instalar python só para isso ...
user11955
1
Não, você manterá o Python por perto para outras coisas;)
Ignacio Vazquez-Abrams

Respostas:

26
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

Explicação da documentação (ou seja, digite for /?no prompt de comando):

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)
Codism
fonte
1
É algum tipo de língua estrangeira? Seja como for, funciona muito bem! Obrigado!
user11955
Impressionante! Eu apenas tentei. Você se importaria de explicar a sintaxe ou fornecer um link para uma explicação?
Christopher Bottoms
1
@ChristopherBottoms: Espero que você já tenha entendido a sintaxe. mas caso você ainda precise, vá para a janela cmd e digite / /?
Codism
resposta fenomenal!
31418
-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
fonte
Funciona como um arquivo .bat
NeoMati
isso não funciona. O OP quer nomes com 0prefixo (000-999) e ele quer números apenas sem nenhum prefixo. Seu código produz números sem o prefixo 0 e você também adicionou um prefixo estranho. Por exemplo, se o nome do lugar é abc, em seguida, você cria abc"__"0, abc"__"1... abc"__"10...abc"__"999
phuclv