Script batch per eliminare i file


96

Ho uno script batch come segue.

D:
del "D:\TEST\TEST1\Archive\*.TSV" 
del "D:\TEST\TEST1\Archive\*.TXT"
del "D:\TEST\TEST2\Archive\*.TSV" 
del "D:\TEST\TEST2\Archive\*.TXT"
del "D:\TEST\TEST 100%\Archive\*.TSV" 
del "D:\TEST\TEST 100%\Archive\*.TXT"

Il codice precedente elimina tutti i file ".txt" e ".tsv" da tutte le cartelle eccetto dalla cartella TEST 100%. Per eliminare i file da TEST 100%ottengo l'errore come The Path could not be found. Immagino che il simbolo% nel nome della cartella crei il problema. Qualcuno può guidarmi per risolvere il problema e per eliminare i file dalla cartella TEST 100%?


Perché hai una citazione sulla prima riga? Inoltre, perché ti riferisci all'unità quando il tuo file batch è già cambiato in quell'unità con la prima riga? Ho provato a replicare il tuo problema e tutto ha funzionato. Hai confermato che l'archivio esiste in Test 100%?
RonaldBarzell

Risposte:


112

Devi sfuggire al% con un altro ...

del "D:\TEST\TEST 100%%\Archive*.TXT"

Non posso parlare per l'OP, ma sul mio sistema non c'è problema a trovare un percorso con%, e l'escape con %% impedisce al sistema di trovarlo.
RonaldBarzell

@ user1161318 - L'ho testato su Windows 7. Senza l'escape, in un file batch, risulta "Il sistema non riesce a trovare il percorso specificato". Come ho postato funziona.
Russ Freeman

Ok, su XP ottengo i risultati opposti. Trova il percorso corretto con%, ma non riesce a trovarlo con %%.
RonaldBarzell

5
La mia ipotesi è che lo stai facendo dal prompt dei comandi e non da un file batch.
Russ Freeman

2
Probabilmente hai ragione. Continuo a dimenticare che all'interno di un file batch,% è un prefisso variabile e devi evitarlo. +1
RonaldBarzell

12

Esistono diversi modi per fare le cose in batch, quindi se fuggire con una doppia percentuale %%non funziona per te, potresti provare qualcosa del genere:

set olddir=%CD%
cd /d "path of folder"
del "file name/ or *.txt etc..."
cd /d "%olddir%"

Come funziona:

set olddir=%CD%imposta la variabile "olddir"o qualsiasi altro nome di variabile che ti piace nella directory da cui è stato avviato il tuo file batch.

cd /d "path of folder"cambia la directory corrente che il batch esaminerà. mantieni le virgolette e cambia il percorso della cartella a quale percorso stai mirando.

del "file name/ or *.txt etc..."cancellerà il file nella directory corrente che il batch sta guardando, basta non aggiungere un percorso di directory prima del nome del file e avere solo il nome completo del file o, per eliminare più file con la stessa estensione con *.txto qualunque estensione tu abbia bisogno.

cd /d "%olddir%"prende la variabile salvata con il vecchio percorso e torna alla directory con cui è stato avviato il batch, non è importante se non si desidera che il batch torni al percorso della directory precedente e come indicato prima che il nome della variabile possa essere modificato in qualunque cosa desideri modificando il file set olddir=%CD% line.


È meglio farlo pushd "folder" && del "filename" & popd.
Nuno André

10

Diciamo che hai salvato il tuo software sul desktop.
se vuoi rimuovere un'intera cartella come un programma di disinstallazione, puoi usarlo.

cd C:\Users\User\Detsktop\
rd /s /q SOFTWARE

questo eliminerà l'intera cartella chiamata software e tutti i suoi file e sottocartelle

Assicurati di eliminare la cartella corretta perché non è disponibile l'opzione Sì / No


4

Considera che i file che devi eliminare hanno un'estensione txte si trovano nella posizione D:\My Folder, quindi puoi utilizzare il codice seguente all'interno del file bat.

cd "D:\My Folder"
DEL *.txt 

-7

nel codice batch il tuo percorso non deve contenere alcuno spazio, quindi cambia il nome della cartella da "TEST 100%" a "TEST_100%" e il tuo nuovo codice sarà del "D: \ TEST \ TEST_100% \ Archive * .TXT"

spero che questo risolva il tuo problema


6
Non ne ho mai sentito parlare. È nuovo? -Sarcasmo spento. Funziona con gli spazi come fa senza, purché lo imposti tra virgolette.
Blacktempel
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.