Trovare e rinominare i file senza estensione?
-
06-07-2019 - |
Domanda
Quindi, ho un sacco di file senza estensione. Voglio scrivere uno script batch di Windows che:
- Trova file senza estensione (in una cartella specificata)
- Aggiungi .bla alla fine del nome del file
Sono un tale noob di script batch di Windows che non so nemmeno da dove cominciare. Suggerimenti?
Soluzione
Per i file batch di Windows, questo rinominerà solo i file senza estensione .bla:
rename *. *.bla
Nota che il primo argomento è una stella e un punto: *.
Il secondo argomento è: * .bla
La combinazione punto iniziale (*.) rappresenta i file senza estensioni in questo contesto.
Prima:
06/21/2009 11:57 PM 6 test
06/21/2009 11:57 PM 7 test.exe
06/21/2009 11:57 PM 7 test2
Dopo:
06/21/2009 11:57 PM 6 test.bla
06/21/2009 11:57 PM 7 test.exe
06/21/2009 11:57 PM 7 test2.bla
Nota aggiuntiva: la riga di comando opposta rinominerebbe tutti i file .bla in nessun file di estensione.
Modifica :
Per rinominare in modo ricorsivo i file senza estensione tra le sottodirectory (non supporta gli spazi nei percorsi):
@echo off
FOR /F %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
EDIT2:
Per rinominare in modo ricorsivo i file senza estensione tra le sottodirectory (supporta spazi nel percorso):
@echo off
for /f "tokens=* delims= " %%i in ('dir /b/s/A-d') DO (
if "%%~xi" == "" rename "%%~fi" "%%~ni.bla"
)
Altri suggerimenti
Ecco un altro possibile comando per rinominare i file senza estensioni ricorsivamente (supponendo che i percorsi dei file non contengano spazi ):
for /f %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
Versione batch (con %
raddoppiato):
@echo off
for /f %%i in ('dir *. /b /s /a-d') do (
rename "%%~fi" "%%~ni.bla"
)
Se i nomi di file o cartelle contengono spazi , utilizzare invece questo comando:
for /f "tokens=* delims= " %i in ('dir *. /b /s /a-d') do rename "%~fi" "%~ni.bla"
Versione batch:
@echo off
for /f "tokens=* delims= " %%i in ('dir *. /b /s /a-d') do (
rename "%%~fi" "%%~ni.bla"
)
Modifica: ecco una riga più corta che supporta gli spazi nei percorsi:
for /r %i in (*.) do ren "%~fi" "%~ni.bla"
Versione batch:
@for /r %%i in (*.) do ren "%%~fi" "%%~ni.bla"
per fare questo nelle sottodirectory usa questo:
for /f %a in ('dir /b /ad /s') do rename %a\*. *.bla
se lo stai usando in un file batch, devi raddoppiare '%'
for /f %%a in ('dir /b /ad /s') do rename %%a\*. *.bla
modifica
e se hai spazi nei nomi delle tue directory, puoi provare questo (versione batch):
for /f "tokens=* delims= " %%a in ('dir /b /ad /s') do rename "%%a\*." "*.bla"