Ecco lo script. Basta inserire lo script nella cartella ed eseguirlo.
@echo off & setlocal EnableDelayedExpansion
set a=1
for /f "delims=" %%i in ('dir /b *') do (
if not "%%~nxi"=="%~nx0" (
ren "%%i" "!a!"
set /a a+=1
)
)
Se si desidera mantenere le estensioni, ad esempio rinominare "IMG-12223.jpg", "IMG-12224.jpg", ecc per "1.jpg", "2.jpg", ecc, può usare il seguente script
@echo off & setlocal EnableDelayedExpansion
set a=1
for /f "delims=" %%i in ('dir /b *.jpg') do (
ren "%%i" "!a!.jpg"
set /a a+=1
)
[Aggiornamento] Here're spiegazioni per le linee di cui al commento di Jack.
setlocal EnableDelayedExpansion
In generale, vogliamo la variabile a
essere ritardato di espansione quando è eseguito, ma non la linea viene letto. Senza di esso, la variabile a
non può ottenere il suo valore aumentato ma sempre 1.
Per il dettaglio di EnableDelayedExpansion, fare riferimento alla risposta https://stackoverflow.com/a/18464353/2749114.
for /f "delims=" %%i in ('dir /b *.jpg')
Qui dir
con /b
opzione, elenchi di file solo i nomi di tutti i file jpg.
Il ciclo for
attraversa e rinomina tutti i file jpg.
Per l'opzione delims
, poiché il carattere delimitatore predefinito è uno spazio, senza l'opzione delims=
, non riesce con i file di immagine con spazi nei nomi file. OSSIA per un file immagine denominato "img with spaces.jpg", senza l'opzione, il valore di %%i
è "img" ma non l'intero nome "img con spaces.jpg", che non è corretto.
Per il ciclo for
, fare riferimento alla pagina http://ss64.com/nt/for_f.html.
devo cambiare a if not "%%~nxi"=="%~nx0"
per essere più precisi. E i codici allegati sono stati aggiornati.
In realtà è usato per evitare di rinominare il file bat stesso. Se limitiamo la ridenominazione solo su file "jpg", la riga non è necessaria.
%%~nxi
è il nome del file con estensione per ogni file attraversato. E %~nx0
è il file bat in esecuzione con estensione. Per dettagli, fare riferimento alla pagina DOS BAT file equivalent to Unix basename command?.
Solo un suggerimento: il visualizzatore multimediale Freeware [IrfanView] (http://www.irfanview.com/) ha incorporato un [rinominazione batch] (http://graphicssoft.about.com/cs/renamers/ht /irfanviewrename.htm) funzione per rinominare le immagini con un contatore. Anche il gestore di file shareware [Total Commander] (http://www.ghisler.com/) ha una funzione [multi-rename] (http://www.ghisler.com/advanced.htm#tutorial_rename) con ancora più opzioni e molto facile da usare. A mio parere, non ha senso utilizzare un file batch per tale attività di ridenominazione di file che non viene eseguita automaticamente come operazione pianificata. – Mofi