2009-05-25 10 views

risposta

28

Il mkdir di Windows lo fa automaticamente se le estensioni ai comandi sono abilitate. Sono praticamente su ogni scatola che abbia mai usato, ma, se non lo sono, è possibile creare il proprio script per farlo:

@echo off 
setlocal enableextensions 
md %1 
endlocal 

Espansione:

estensioni di comando sono una caratteristica aggiunta di cmd.exe che ti permette di fare molto di più (a costo di una piccola compatibilità con le incarnazioni precedenti del linguaggio batch).

Windows XP cmd.exe dovrebbe avere queste estensioni abilitate per impostazione predefinita ma è possibile configurare la casella in modo che siano disabilitate per impostazione predefinita (utilizzando "cmd /e:off" come processore predefinito). Se lo fai e vuoi usare le estensioni, i tuoi file cmd devono avere un setlocal per riaccenderli.

Lo script di cui sopra potrebbe essere chiamato md2.cmd e poi si sarebbe garantito per essere in grado di creare più livelli di directory con "md2 a\b\c" senza doversi preoccupare se le estensioni sono state abilitate.

Quasi ognuno dei cmd script che scrivo inizia con:

setlocal enableextensions enabledelayedexpansion 

per garantire ottengo il più vicino possibile al comportamento del mio amato bash :-)

+0

Puoi spiegare come questa risposta è meglio di eseguire semplicemente 'md'? –

+1

@notfed, se le estensioni di comando sono _disabled_ per qualche motivo, md non creerà l'intero percorso. Questa è la situazione che ho dato nella risposta, e quella per cui avrai bisogno di uno script, per abilitarli temporaneamente. – paxdiablo

19

In Windows, mkdir crea gli alberi di directory per impostazione predefinita.

mkdir a\b\c

+0

Penso che volevi mettere 'md' e non' mkdir'. – Shyam

+3

Entrambi 'mkdir' e' md' sono gli stessi in Windows. –

+6

Tranne che ci sono alcune cose GNUWin32 in giro sul tuo percorso.Quindi, stranamente, l'mkdir GNU viene chiamato usando mkdir (e mi ci è voluto un po 'per scoprire perché non potevo più creare alberi di cartelle ...) :-) – Joey

3

Se si desidera utilizzare barre in avanti, basta dare la struttura della directory che si desidera tra virgolette doppie. mkdir "org/frame/bu/fed/config"

3

Per uno strano motivo quando ho tentato di creare una directory con il seguente metodo;

mkdir src/main/java/main/resources 

non ha funzionato, ho dovuto circondare il percorso tra virgolette, come mostrato di seguito;

mkdir "src/main/java/main/resources" 

Inoltre, unix lo consente;

mkdir -p src/main/java src/main/resources 

in cui verranno creati due rami come mostrato di seguito, l'equivalente di quello su Windows è;

mkdir "src/java/resources" "src/main/resources"

src 
-----java 
-------resources 
-----main 
-------resources 

Spero che questo aiuta! xox