Ho bisogno di scrivere un comando in un file .bat che cancelli in modo ricorsivo tutte le cartelle che iniziano con una determinata stringa. Come posso ottenere questo?Elimina in modo ricorsivo tutte le cartelle che iniziano con
risposta
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).
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 :-)
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. –
@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
Rossel: non stava urlando, ho solo scritto maiuscole. Faccio una nuova domanda allora. –
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
Ouch. Ho bisogno di più sonno ... o tè ... * (colpisce la testa sul tavolo) * – Joey
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
Ho dovuto espanderlo un po 'dal mio semplice tentativo originale, perché 'rd' non sembra espandere i caratteri jolly da solo. –
FOR /F "tokens=*" %i IN ('DIR **[[SearchTerm]]** /A:D /s /b') do rd /S/Q %i
rm-rf - "Nome directory"
Es: rm -rf - "-2.096.378"
Sopra comando elimina le cartelle/directory che iniziano con - o caratteri jolly
nient'altro che @ la risposta di Maorco ha funzionato per me. Purtroppo non ha voti diversi dai miei. :( – IsmailS
fww: è l'unico che ha funzionato anche per me grazie :) – edzillion
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'. –