2009-11-27 21 views

risposta

42

Questa è la risposta completa si desideri:

FOR /D /R %%X IN (certain_string*) DO RD /S /Q "%%X" 

dove ovviamente è necessario sostituire certain_string con la stringa con cui iniziano le cartelle.

Questo elimina RECURSIVELY come richiesto (intendo che passa attraverso tutte le cartelle e sottocartelle).

+2

nient'altro che @ la risposta di Maorco ha funzionato per me. Purtroppo non ha voti diversi dai miei. :( – IsmailS

+3

fww: è l'unico che ha funzionato anche per me grazie :) – edzillion

+1

Thx. Ho dovuto escludere due directory, che hanno portato a questo comando: 'FOR/D/R %% X IN (* .lproj) DO ​​IF/I" %% ~ xnX "neq" en.lproj "IF/I" %% ~ xnX "neq" english.lproj "RD/S/Q" %% ~ fX "'. Spiegazione: ['%% ~ xnX'] (http://stackoverflow.com/a/636391) corrisponde al nome completo della directory. 'IF/I .. neq" en.lproj "' filtra tutte le directory che sono uguali a '" en.lproj "' ('/ I' = case-insensitive). IF [può essere annidato] (http://stackoverflow.com/a/2143203). Alla fine, ho cancellato in modo ricorsivo tutte le directory che terminano con '.lproj', ad eccezione di' en.lproj' e 'english.lproj'. –

1

Incompiuta, penso. Se si intende "ricorsivamente scendere una gerarchia di directory per cancellare tutte le cartelle che iniziano con una certa stringa", allora la seguente potrebbe essere sufficiente:

for /f "delims=" %%x in ('dir /b /ad abc*') do rd /s /q "%%x" 

Ciò ricorsivamente nella struttura di directory, trovando tutte le cartelle che iniziano con "abc" , scorrere su quell'elenco e rimuovere ogni cartella.

Forse è necessario avvolgere un if exist attorno allo rd in base all'ordine in cui le directory vengono trovate e restituite. In generale, l'iterazione di qualcosa e cambiando allo stesso tempo è raramente una buona idea, ma a volte funziona :-)

+1

Rössel: ha funzionato? Non funziona quando provo ad eliminare le directory che terminano con ".delme", ​​ho provato il tuo suggerimento in questo modo: per/f "delim =" %% x in ('dir/b/ad * .delme') do rd/s/q "%% x" MA NON SEMBRA FUNZIONARE. –

+2

@Marco: non c'è bisogno di urlare. In caso di dubbio, fai una nuova domanda e racconta i tuoi problemi in modo chiaro e dettagliato. Qualcosa come »Non funziona« di solito è un rapporto di cattiva gestione. – Joey

+2

Rossel: non stava urlando, ho solo scritto maiuscole. Faccio una nuova domanda allora. –

4

ne dite:

for /d %a in (certain_string*) do rd /s %a 

Ciò funzionerà dal prompt dei comandi. All'interno di un file batch, si dovrebbe raddoppiare i % s, come al solito:

@echo off 
for /d %%a in (certain_string*) do rd /s %%a 
+0

Ouch. Ho bisogno di più sonno ... o tè ... * (colpisce la testa sul tavolo) * – Joey

+0

Hmm, anche se probabilmente non si reciterà nella struttura ad albero e troverà cartelle più profonde che corrispondono ai criteri, giusto? (Le mie soluzioni non lo fanno altrettanto bene, ma ho appena capito che era quello che intendeva l'OP). – Joey

+0

Ho dovuto espanderlo un po 'dal mio semplice tentativo originale, perché 'rd' non sembra espandere i caratteri jolly da solo. –

-1
FOR /F "tokens=*" %i IN ('DIR **[[SearchTerm]]** /A:D /s /b') do rd /S/Q %i 
0

rm-rf - "Nome directory"

Es: rm -rf - "-2.096.378"

Sopra comando elimina le cartelle/directory che iniziano con - o caratteri jolly

Problemi correlati