Elimina un file all'interno della sottocartella usando bat


0

Conosco il nome della sottocartella all'interno della quale si trova il file che voglio cancellare. Il nome della sottocartella è "My Subfolder" e il file che voglio eliminare all'interno della sottocartella è "The-Bad File.txt". Sono al drive "D". "La mia sottocartella" si trova all'interno D:\Folder-2\ ; D:\Folder-4\; D:\Folder-54\; D:\Folder-543\ ecc. ecc. (non conosco i nomi effettivi delle cartelle all'interno dei quali è presente "La mia sottocartella"). Voglio cercare queste cartelle solo per eliminare "File.txt errato" usando il file .bat.

Non voglio questo:

@echo off
del /s "Bad File.txt"

Questo cercherà l'intero disco, che richiederà tempo. Quello che voglio in una parola più perfetta è, voglio prima cercare "La mia sottocartella". Quindi all'interno di "My Subfolder" si desidera eliminare "Bad File.txt"

Risposte:


2

Se sei ASSOLUTAMENTE SICURO, c'è solo un'istanza di My Subfolder, quindi:

@echo off
Set StartFolder=D:\Path\To\A\Folder
for /f "tokens=*" %%a in ('DIR /s /b /ad "%StartFolder%"') Do del "%%a\Bad File.txt"

Basta cambiare il percorso di "StartFolder" nella seconda riga della cartella in cui si desidera iniziare a cercare.

Anche se non credo che la ricerca della cartella migliorerà il tempo necessario (non di molto almeno).


Penso che questa sia la risposta che stavo cercando. Per favore, fai un altro po '? "Bad File.txt" non è all'interno D:\Folder-x\My Subfolder` in all the cases. Its can be in D: \ Folder-x \ My Subfolder \ xxxx \ "o potrebbe essere in` D: \ Folder-x \ My Subfolder \ xxxx \ yyyyy \ "in ogni caso," Bad File.txt "dovrebbe essere cancellato. Per favore aiuto; questa risposta è troppo vicina ...
Deb

1
Il "/ s" sul comando DIR lo troverà ovunque sotto il livello superiore dal quale si cerca.
Debra

Voglio solo fare una ricerca all'interno D:\Folder-x per My Subfolder Non dovrebbe fare una ricerca approfondita .. Esiste un modo per cercare tutte le cartelle sotto l'unità D per la mia sottocartella, ma non effettuerà una ricerca approfondita in tutte le cartelle di unità .. I.e, D: \ Level1 Folder \. Ma non esamineremo D: \ Level1 Folder \ Level2 Folder \ etc ..
Deb

Se ho capito bene ... vuoi cercare un livello in profondità per il My Subfolder e cancella tutto Bad File.txt da tutte le sue sottocartelle (ricerca approfondita). Potresti volerlo usare for /f "tokens=*" %%a in ('DIR /b /ad "%StartFolder%"') Do del /s "%%a\My Subfolder\Bad File.txt". Notare la mancanza di /s nel DIR e l'aggiunta di /s e \My Subfolder\ nel del. Il primo DIR cercherà solo le sottocartelle principali D:\ e il del /s cancellerà tutto "Bad File.txt" nel My Subfolder e tutte le sue sottocartelle. Se questo non è ciò che vuoi, potresti voler chiarire la tua domanda.
Rik

0

Se usi la riga di comando TCMD, è semplicissimo:

global if exist "Bad File.txt" del "Bad File.txt"

Questo è molto più veloce di del /s. Stimo 100X per un disco rigido con poche migliaia di cartelle.

Potresti volerlo usare global /q se il disegno dello schermo di ciascun nome di directory rallenta le cose. So che lo fa per me, perché la mia carta sta guidando 3 display 1080p.

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.