Come posso utilizzare la riga di comando di Windows per modificare le estensioni di migliaia di file *****.jpg
?
Come posso utilizzare la riga di comando di Windows per modificare le estensioni di migliaia di file *****.jpg
?
Risposte:
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 FOR
comando. Può essere utilizzato con l' /R
opzione per applicare ricorsivamente un comando ai file corrispondenti. Per esempio:
for /R %x in (*.txt) do ren "%x" *.renamed
cambierà ricorsivamente tutte le .txt
estensioni .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
ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt
?
FOR
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
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.
man ren
? La domanda riguardava Windows / cmd
. Quelli ora forniscono man
pagine? Che cos'è ren-1.0
e come possiamo visualizzare la sua man
pagina nel contesto?
è semplice
ren *.* *.jpg
prova questo nel prompt dei comandi
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.
Rinomina più estensioni di file:
Vuoi cambiare ringtone1.mp3
, ringtone2.mp3
aringtone1.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.
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 .StoredProcedure
dal nome file. Sono sicuro che può essere adattato per coprire più casi, chiedere input ed essere nel complesso più generico.
set
comandi con questo singolo: set "B=%%~nxf"
. ( %%~nxf
è n ame ed e x tensione di %%f
). %cd%
potrebbe non essere valido, quando lo fai ricorsivo.
So che è così vecchio, ma ci sono arrivato e le risposte fornite non hanno funzionato per me su PowerShell, quindi dopo aver cercato ho trovato questa soluzione
per farlo in PowerShell
Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}
il merito va a http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/