Modifica di tutte le estensioni dei file in una cartella con un comando su Windows


145

Come posso utilizzare la riga di comando di Windows per modificare le estensioni di migliaia di file *****.jpg?


cosa intendi cambiando tutte le estensioni come *****. jpg? significa che tutte le estensioni dei file in jpg? se sì, usare ren . * .jpg
Imran Rizvi il

quale sistema operativo? Come vuoi cambiarli?
Bryce,

@bryce off naturalmente il sistema operativo Windows ..
Berker Yüceer

Risposte:


300

Puoi usare ren(come in rinomina ):

ren *.XXX *.YYY

E, naturalmente, cambia XXX e YYY per le estensioni appropriate. Cambierà da XXX a YYY. Se si desidera modificare tutte le estensioni, utilizzare nuovamente il carattere jolly:

ren *.* *.YYY

Un modo per far funzionare questo in modo ricorsivo è con il FORcomando. Può essere utilizzato con l' /Ropzione per applicare ricorsivamente un comando ai file corrispondenti. Per esempio:

for /R %x in (*.txt) do ren "%x" *.renamed

cambierà ricorsivamente tutte le .txtestensioni .renamed, iniziando dalla directory corrente. %xè la variabile che contiene i nomi dei file corrispondenti.

E, dal momento che hai migliaia di file, assicurati di attendere fino a quando il cursore inizia a lampeggiare di nuovo indicando che ha funzionato.

Nota: funziona solo su cmd. Non funzionerà su Powershell o Bash


* .XXX cambierà i file per quella particolare estensione (significa che rinominerà tutti i file con estensione XXX)
Habib

@ keyser5053 posso anche ottenere un rapporto sull'azione fatta qui .. con l'utilizzo ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer,

E la sostituzione ricorsiva in tutte le sottodirectory?
NightElfik,

@NightElfik Ho aggiunto un esempio ricorsivo che utilizzaFOR
keyser

4
Non sono riuscito a farlo funzionare in PowerShell, ma ha funzionato bene in cmd.exe. Solo così gli altri sono consapevoli.
hazzey,

20

su CMD

genere

ren *.* *.jpg

. selezionerà tutti i file e rinominerà * (qualunque sia il loro nome) più l'estensione a jpg


10

Rinominare il comportamento è talvolta "meno intuitivo"; per esempio...

ren * .THM * .jpg rinominerà i tuoi file THM per avere un'estensione di .jpg. ad es .: GEDC003.THM sarà GEDC003.jpg

ren * .THM * b.jpg rinominerà i tuoi file THM in * .THMb.jpg. ad es .: GEDC004.THM diventerà GEDC004.THMb.jpg

ren * .THM * .b.jpg rinominerà i tuoi file THM in * .b.jpg ad es .: GEDC005.THM diventerà GEDC005.b.jpg


bella spiegazione
Arslan Ahmad

7

NOTA: non per Windows

Utilizzando ren-1.0 il modulo corretto è:

"ren *.*" "#2.jpg"

A partire dal man ren

Il modello di sostituzione è un altro nome file con indici jolly incorporati, ognuno dei quali è costituito dal carattere # seguito da una cifra compresa tra 1 e 9. Nel nuovo nome di un file corrispondente, gli indici jolly sono sostituiti dai caratteri effettivi che corrispondono al riferimento caratteri jolly nel nome file originale.

e

Si noti che la shell normalmente espande i caratteri jolly * e?, Che nel caso di ren è indesiderabile. Pertanto, nella maggior parte dei casi è necessario racchiudere il modello di ricerca tra virgolette.


Ho dovuto usare # 1: ren "* .csv" "# 1.json"
elmalto

1
man ren? La domanda riguardava Windows / cmd. Quelli ora forniscono manpagine? Che cos'è ren-1.0e come possiamo visualizzare la sua manpagina nel contesto?
underscore_d


3

Solo per le persone che cercano di farlo in file batch, questo codice funziona:

FOR /R "C:\Users\jonathan\Desktop\test" %%f IN (*.jpg) DO REN "%%f" *.png

In questo esempio tutti i file con estensione .jpg nella directory C: \ Users \ jonathan \ Desktop \ test vengono cambiati in * .png.


2

Rinomina più estensioni di file:

Vuoi cambiare ringtone1.mp3, ringtone2.mp3aringtone1.wav ,ringtone2.wav

Ecco come fare: Sono in d drive al prompt dei comandi (CMD), quindi uso:

d:\>ren *.* *.wav 

Questo è solo un esempio di estensioni di file, puoi usare qualsiasi tipo di estensione come WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT, dipende dal tuo sistema operativo.

E, dal momento che hai migliaia di file, assicurati di attendere fino a quando il cursore inizia a lampeggiare di nuovo indicando che ha funzionato.


1

Nel mio caso avevo una directory con oltre 800 file che terminavano .StoredProcedure.sql(erano scritti con SSMS ).

Le soluzioni sopra pubblicate non hanno funzionato. Ma ho pensato a questo:

(Basato sulle risposte alla programmazione batch: ottieni il percorso relativo del file )

@echo off
setlocal enabledelayedexpansion
for %%f in (*) do (
  set B=%%f
  set B=!B:%CD%\=!
  ren "!B!" "!B:.StoredProcedure=!"
)

Lo script sopra rimuove la sottostringa .StoredProceduredal nome file. Sono sicuro che può essere adattato per coprire più casi, chiedere input ed essere nel complesso più generico.


2
sostituire le due setcomandi con questo singolo: set "B=%%~nxf". ( %%~nxfè n ame ed e x tensione di %%f). %cd%potrebbe non essere valido, quando lo fai ricorsivo.
Stephan,


0

Un modo alternativo per rinominare i file usando renamer pacchetto di NPM.

di seguito è riportato un esempio di ridenominazione delle estensioni di file

renamer -d --path-element ext --find ts --replace js *

0

Quello che ha funzionato per me è questo (cd prima nella cartella):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
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.