Come creare in batch un intervallo di cartelle (000-999) in Windows?


16

Devo creare 1000 cartelle numerate da 000 a 999 all'interno di una directory. Come posso fare questo usando cmd(cioè la riga di comando di Windows)?


Sono problemi come questi di solito rivolgo le persone verso Python. La riga di comando di Windows è tutt'altro che potente, IMO ha bisogno di qualcosa per completarlo.
Phoshi,

1
Devo solo farlo una volta, non voglio installare Python solo per quello ...
user11955

1
No, tieni il Python in giro per altre cose;)
Ignacio Vazquez-Abrams,

Risposte:


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

Spiegazione dalla documentazione (ovvero digitare for /?al prompt dei comandi):

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)

1
È una lingua straniera di qualche tipo? Qualunque cosa, funziona alla grande! Grazie!
user11955

Eccezionale! L'ho appena provato. Ti dispiacerebbe spiegare la sintassi o dare un link a una spiegazione?
Christopher Bottoms,

1
@ChristopherBottoms: spero che tu abbia già capito la sintassi. ma se ne hai ancora bisogno, vai alla finestra cmd e digita /?
Codismo,

risposta fenomenale!
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)

Funziona come un file .bat
NeoMati,

non funziona. L'OP vuole i nomi con 0prefisso (000-999) e vuole solo numeri senza prefisso. Il tuo codice produce numeri senza prefisso 0 e hai anche aggiunto uno strano prefisso. Ad esempio, se il nome del luogo è abcquindi creare abc"__"0, abc"__"1... abc"__"10...abc"__"999
phuclv,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.