2013-07-15 8 views
10

Ho numerosi file in una struttura di directory molto complessa e, per ragioni che non vale la pena discutere, è necessario rinominare tutti i file con estensione ".inp" per avere ".TXT" estensioni. Esistono numerosi altri file con altre estensioni che non desidero essere toccati e desidero farlo in modo ricorsivo su almeno 5 livelli.Ridenominazione di massa delle estensioni di file in modo ricorsivo (batch di windows)

Finora ho:

for /d %%x in (*) do pushd %%x & Ren *.inp *.TXT & popd 

... ma questo va solo verso il basso di un livello di directory.

Qualcuno può aiutare? Grazie in anticipo!

risposta

16
for /r startdir %%i in (*.inp) do ECHO ren "%%i" "%%~ni.txt" 

dovrebbe funzionare per voi. Sostituisci startdir con il tuo directoryname iniziale e quando hai verificato che questo funzioni in modo soddisfacente, rimuovi lo echo prima che lo ren effettui effettivamente la ridenominazione.


Ai downvoters: esecuzione di un file batch differisce dal excuting dal comando chiede conferma dal fatto che ciascun %%x dove x è il metavariable (variabile del ciclo di controllo) deve essere ridotto a %, così

for /r startdir %i in (*.inp) do ECHO ren "%i" "%~ni.txt" 

dovrebbe funzionare se si esegue questo dal prompt. Si prega di leggere la nota su echo.

+0

Impressionante! È come una magia nera semplice ed efficace :) – myforums

+0

@Magoo ... penso di amarti. Grazie per questa soluzione a un problema che ha richiesto 2 giorni della mia vita, un lavoro eccellente grazie! – Neville

20

In Windows 7, la seguente linea di comando funziona per me, per rinominare tutti i file, in modo ricorsivo, in .js * per * .txt:

FOR /R %x IN (*.js) DO ren "%x" *.txt 
+3

Questo ha funzionato, la risposta selezionata no, ha detto "%% ero inatteso". Grazie per questo ! –

+0

Ottenuto lo stesso errore "%% ero inatteso" dal codice nella risposta accettata. Nota che devi andare alla directory iniziale – brunettdan

+0

@SteveChamaillard: Questo perché la risposta selezionata presuppone che la linea sia in un file batch. Se è eseguito dal prompt, è necessario modificare ciascun '%%' in '%' – Magoo