Mengubah semua ekstensi file dalam folder dengan satu perintah pada Windows

145

Bagaimana saya bisa menggunakan baris perintah Windows untuk mengubah ekstensi ribuan file *****.jpg?

Berker Yüceer
sumber
apa yang Anda maksud dengan mengubah semua ekstensi sebagai *****. jpg? apakah ini berarti semua ekstensi file ke jpg? jika ya gunakan ren . * .jpg
Imran Rizvi
sistem operasi apa? Bagaimana Anda ingin mengubahnya?
bryce
@Bryce tentunya sistem operasi windows ..
Berker Yüceer

Jawaban:

299

Anda dapat menggunakan ren(seperti dalam mengganti nama ):

ren *.XXX *.YYY

Dan tentu saja, ganti XXX dan YYY untuk ekstensi yang sesuai. Itu akan berubah dari XXX ke YYY. Jika Anda ingin mengubah semua ekstensi, cukup gunakan wildcard lagi:

ren *.* *.YYY

Salah satu cara untuk membuat pekerjaan ini secara rekursif adalah dengan FORperintah. Ini dapat digunakan dengan /Ropsi untuk secara rekursif menerapkan perintah ke file yang cocok. Sebagai contoh:

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

akan mengubah semua .txtekstensi .renamedsecara rekursif, mulai dari direktori saat ini. %xadalah variabel yang menyimpan nama file yang cocok.

Dan, karena Anda memiliki ribuan file, pastikan untuk menunggu hingga kursor mulai berkedip lagi yang menunjukkan bahwa itu sudah berfungsi.

Catatan: ini hanya berfungsi pada cmd. Tidak akan bekerja pada Powershell atau Bash

keyser
sumber
* .XXX akan mengubah file untuk ekstensi tertentu (artinya akan mengubah nama semua file dengan ekstensi XXX)
Habib
@ keyser5053 juga bisakah saya mendapatkan laporan tentang tindakan yang dilakukan di sini .. dengan menggunakan ren *.* *.jpg > E:\Log\Cmd\ExtChange\ext.txt?
Berker Yüceer
Dan bagaimana dengan penggantian rekursif di semua sub-dirs?
NightElfik
@NightElfik Saya menambahkan contoh rekursif yang menggunakanFOR
keyser
4
Saya tidak bisa mendapatkan ini berfungsi di PowerShell, tapi itu bekerja dengan baik di cmd.exe. Supaya orang lain sadar.
hazzey
20

pada CMD

Tipe

ren *.* *.jpg

. akan memilih semua file, dan mengganti nama menjadi * (nama apa pun yang mereka miliki) ditambah ekstensi ke jpg

Habib
sumber
10

Ganti nama perilaku terkadang 'kurang intuitif'; sebagai contoh...

ren * .THM * .jpg akan mengubah nama file THM Anda menjadi ekstensi .jpg. misalnya: GEDC003.THM akan menjadi GEDC003.jpg

ren * .THM * b.jpg akan mengubah nama file THM Anda menjadi * .THMb.jpg. misalnya: GEDC004.THM akan menjadi GEDC004.THMb.jpg

ren * .THM * .b.jpg akan mengubah nama file THM Anda menjadi * .b.jpg misalnya: GEDC005.THM akan menjadi GEDC005.b.jpg

PictureGuy
sumber
penjelasan yang bagus
Arslan Ahmad
7

CATATAN: bukan untuk Windows

Menggunakan ren-1.0 formulir yang benar adalah:

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

Dari man ren

Pola penggantian adalah nama file lain dengan indeks wildcard tertanam, yang masing-masing terdiri dari karakter # diikuti oleh digit dari 1 hingga 9. Dalam nama baru file yang cocok, indeks wildcard digantikan oleh karakter aktual yang cocok dengan referensi yang direferensikan. wildcard dalam nama file asli.

dan

Perhatikan bahwa shell biasanya memperluas wildcard * dan?, Yang dalam kasus ren tidak diinginkan. Dengan demikian, dalam banyak kasus perlu menyertakan pola pencarian dalam tanda kutip.

gbonetti
sumber
Saya harus menggunakan # 1: ren "* .csv" "# 1.json"
elmalto
1
man ren? Pertanyaannya adalah tentang Windows / cmd. Apakah itu sekarang menyediakan manhalaman? Apa itu ren-1.0dan bagaimana kita dapat melihat manhalamannya dalam konteks?
underscore_d
5

itu sederhana

ren *.* *.jpg

coba ini di command prompt

Imran Rizvi
sumber
3

Hanya untuk orang yang ingin melakukan ini dalam file batch, kode ini berfungsi:

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

Dalam contoh ini semua file dengan ekstensi .jpg di direktori tes C: \ Users \ jonathan \ Desktop \ diubah menjadi * .png.

Jonathan
sumber
2

Ganti nama beberapa ekstensi file:

Anda ingin mengubah ringtone1.mp3, ringtone2.mp3menjadi ringtone1.wav,ringtone2.wav

Inilah cara melakukannya: Saya berada di drive d pada command prompt (CMD) jadi saya gunakan:

d:\>ren *.* *.wav 

Ini hanya contoh ekstensi file, Anda dapat menggunakan semua jenis ekstensi file seperti WAV, MP3, JPG, GIF, bmp, PDF, DOC, DOCX, TXT ini tergantung pada sistem operasi Anda.

Dan, karena Anda memiliki ribuan file, pastikan untuk menunggu hingga kursor mulai berkedip lagi yang menunjukkan bahwa itu sudah berfungsi.

nanduvtlr
sumber
1

Dalam kasus saya, saya memiliki direktori dengan 800+ file yang diakhiri .StoredProcedure.sql(ditulis dengan SSMS ).

Solusi yang diposting di atas tidak berfungsi. Tapi saya datang dengan ini:

(Berdasarkan jawaban untuk pemrograman batch - dapatkan jalur relatif file )

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

Script di atas menghilangkan substring .StoredProceduredari nama file. Saya yakin ini dapat diadaptasi untuk mencakup lebih banyak kasus, meminta masukan dan secara keseluruhan lebih umum.

Marc.2377
sumber
2
mengganti dua Anda setperintah dengan satu tunggal ini: set "B=%%~nxf". ( %%~nxfAdalah n ame dan e x ketegangan %%f). %cd%mungkin tidak valid, ketika Anda melakukannya secara rekursif.
Stephan
1

Saya tahu ini sudah sangat tua, tetapi saya telah mendarat di sana, dan jawaban yang diberikan tidak bekerja untuk saya di PowerShell jadi setelah mencari menemukan solusi ini

untuk melakukannya dengan PowerShell

Get-ChildItem -Path C:\Demo -Filter *.txt | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".old")}

kredit diberikan ke http://powershell-guru.com/powershell-tip-108-bulk-rename-extensions-of-files/

Mohamed
sumber
0

Cara alternatif untuk mengganti nama file menggunakan paket renamer npm.

di bawah ini adalah contoh mengubah nama ekstensi file

renamer -d --path-element ext --find ts --replace js *
Sagar
sumber
0

Apa yang berhasil untuk saya adalah yang ini (cd ke folder dulu):

Get-ChildItem -Filter *.old | Rename-Item -NewName {[System.IO.Path]::ChangeExtension($_.Name, ".new")}
roger
sumber